diff --git a/android/gradle.properties b/android/gradle.properties
index 14eed3944b547f02179b1b42f4b601f91b7957c0..aa51064abebb79ba519e600afb7af23779154d4e 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=0.0.4
-app.versionCode=4
+app.versionName=0.0.5
+app.versionCode=5
diff --git a/lib/entities/tile.dart b/lib/entities/tile.dart
new file mode 100644
index 0000000000000000000000000000000000000000..9d80d4a5758c1dbf440761fd16cea273f0aa4d80
--- /dev/null
+++ b/lib/entities/tile.dart
@@ -0,0 +1,30 @@
+import 'package:flutter/material.dart';
+
+class Tile {
+  final Image image;
+  final double size;
+  final int currentCol;
+  final int currentRow;
+  final int originalCol;
+  final int originalRow;
+
+  Tile(
+    @required this.image,
+    @required this.size,
+    @required this.currentCol,
+    @required this.currentRow,
+    @required this.originalCol,
+    @required this.originalRow,
+  );
+
+  Container widget() {
+    return Container(
+      child: Image(
+        image: this.image.image,
+        width: this.size,
+        height: this.size,
+        fit: BoxFit.fill
+      )
+    );
+  }
+}
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 87da3b9c2437a87b64a98f07a4291cebc34b8ab1..42432a25d78b5f9303227413c9510782fcf89585 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -5,14 +5,15 @@ import 'package:flutter/services.dart' show rootBundle;
 import 'package:image/image.dart' as imglib;
 import 'package:provider/provider.dart';
 
+import '../entities/tile.dart';
 import '../provider/data.dart';
 import '../utils/get_images_list.dart';
 
 class Home extends StatelessWidget {
   static const String id = 'home';
 
-  int _linesCount = 3;
-  int _columnsCount = 3;
+  int _linesCount = 4;
+  int _columnsCount = 4;
 
   double _selectorImageSize = 200;
   double _tipImageSize = 100;
@@ -83,7 +84,7 @@ class Home extends StatelessWidget {
     );
   }
 
-  Future<List<Image>> splitImageInTiles(Data myProvider) async {
+  Future<List<Tile>> splitImageInTiles(Data myProvider) async {
     String imageAsset = getImageAssetName(myProvider.image);
     Uint8List imageData = (await rootBundle.load(imageAsset))
       .buffer
@@ -94,35 +95,31 @@ class Home extends StatelessWidget {
     int width = (image.width / _linesCount).round();
     int height = (image.height / _columnsCount).round();
 
-    List<imglib.Image> parts = List<imglib.Image>();
+    List<Tile> tiles = List<Tile>();
     for (int i = 0; i < _linesCount; i++) {
       for (int j = 0; j < _columnsCount; j++) {
-        parts.add(imglib.copyCrop(image, x, y, width, height));
+        tiles.add(
+          Tile(
+            Image.memory(
+              imglib.encodeJpg(
+                imglib.copyCrop(image, x, y, width, height)
+              )
+            ),
+            _tileImageSize,
+            j, i,
+            j, i,
+          )
+        );
+
         x += width;
       }
       x = 0;
       y += height;
     }
 
-    List<Image> tiles = List<Image>();
-    for (var img in parts) {
-      tiles.add(Image.memory(imglib.encodeJpg(img)));
-    }
-
     return tiles;
   }
 
-  Container _buildImageTileItem(Image tile) {
-    return Container(
-      child: Image(
-        image: tile.image,
-        width: _tileImageSize,
-        height: _tileImageSize,
-        fit: BoxFit.fill
-      )
-    );
-  }
-
   Container _buildTilesetWidget(Data myProvider) {
     List tiles = myProvider.tiles;
 
@@ -139,22 +136,12 @@ class Home extends StatelessWidget {
         width: 2,
       ),
       children: [
-        TableRow(children: [
-          Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
-          Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
-          Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
-        ]),
-        TableRow(children: [
-          Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
-          Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
-          Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
-        ]),
-        TableRow(children: [
-          Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
-          Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
-          Column(children: [_buildImageTileItem(tiles[tileIndex++])]),
-        ]),
-      ],
+        for (var row = 0; row < _linesCount; row++)
+          TableRow(children: [
+            for (var col = 0; col < _columnsCount; col++)
+              Column(children: [tiles[tileIndex++].widget()]),
+          ]),
+      ]
     );
 
     return Container(