diff --git a/android/gradle.properties b/android/gradle.properties
index bc2d95e8567abcfd41c26ebeb95fced48f43e773..818e87b23b224ced309ae5c147e5ed827826e237 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.1
-app.versionCode=1
+app.versionName=0.0.2
+app.versionCode=2
diff --git a/assets/files/images.json b/assets/files/images.json
new file mode 100644
index 0000000000000000000000000000000000000000..059fd9cddbfce35aea8998e40b73768c370b5411
--- /dev/null
+++ b/assets/files/images.json
@@ -0,0 +1,9 @@
+{
+  "images": [
+    "acb90f2491a73ba81e9f3d540ba66ffb",
+    "78edb7a85c822c76eae85da9fcd31324",
+    "0962959cf3392e84b9816de7fd80b656",
+    "7c2f42e74e249ce9dad4a0802dde22c2",
+    ""
+  ]
+}
diff --git a/assets/images/0962959cf3392e84b9816de7fd80b656.png b/assets/images/0962959cf3392e84b9816de7fd80b656.png
new file mode 100644
index 0000000000000000000000000000000000000000..0f291e2a7462f17997ecebc6b2b42903d6e7addf
Binary files /dev/null and b/assets/images/0962959cf3392e84b9816de7fd80b656.png differ
diff --git a/assets/images/78edb7a85c822c76eae85da9fcd31324.png b/assets/images/78edb7a85c822c76eae85da9fcd31324.png
new file mode 100644
index 0000000000000000000000000000000000000000..14442f59574386590e2ff3dcfa8c57e83f898ee9
Binary files /dev/null and b/assets/images/78edb7a85c822c76eae85da9fcd31324.png differ
diff --git a/assets/images/7c2f42e74e249ce9dad4a0802dde22c2.png b/assets/images/7c2f42e74e249ce9dad4a0802dde22c2.png
new file mode 100644
index 0000000000000000000000000000000000000000..d33dd6253a9ca5e766dee502cdd89a9d92004d05
Binary files /dev/null and b/assets/images/7c2f42e74e249ce9dad4a0802dde22c2.png differ
diff --git a/assets/images/acb90f2491a73ba81e9f3d540ba66ffb.png b/assets/images/acb90f2491a73ba81e9f3d540ba66ffb.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e7ab6e66364fe10bb5bd220ee7fa824c4bba0af
Binary files /dev/null and b/assets/images/acb90f2491a73ba81e9f3d540ba66ffb.png differ
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index 4cc589c9909302b9db1c6aee006128755da24337..d61bebb8103b208285f8005b61bb39906add3e74 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -2,21 +2,22 @@ import 'package:flutter/foundation.dart';
 
 class Data extends ChangeNotifier {
 
-  // randomization
-  bool _searchingImage = false;
+  // application data
+  List _images = [];
+
   String _image = '';
 
-  bool get searchingImage => _searchingImage;
+  String get image => _image;
 
-  set searchingImage(bool value) {
-    _searchingImage = value;
+  set updateImage(String value) {
+    _image = value;
     notifyListeners();
   }
 
-  String get image => _image;
+  List get images => _images;
 
-  set updateImage(String value) {
-    _image = value;
+  set updateImages(List value) {
+    _images = value;
     notifyListeners();
   }
 
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index cfbb3d6d1a506b2bddf30c4ea5f92520933227f7..8e10bef92f5a7433dfea81da38c397ea322de1ae 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -2,56 +2,125 @@ import 'package:flutter/material.dart';
 import 'package:provider/provider.dart';
 
 import '../provider/data.dart';
+import '../utils/get_images_list.dart';
 
 class Home extends StatelessWidget {
   static const String id = 'home';
 
+  Future<void> resetGame(Data myProvider) async {
+    myProvider.updateImage = '';
+  }
+
+  Future<void> getImagesList(Data myProvider) async {
+    GetImagesList getImagesList;
+    getImagesList = GetImagesList();
+    await getImagesList.init();
+    if (getImagesList.images != null) {
+      myProvider.updateImages = getImagesList.images;
+    }
+  }
+
+  Container _buildImageSelectorItem(Data myProvider, String image) {
+    double imageSize = 200;
+    String imageAsset = 'assets/images/'+image+'.png';
+
+    return Container(
+      child: FlatButton(
+        child: Container(
+          decoration: BoxDecoration(
+            borderRadius: BorderRadius.circular(8),
+            border: Border.all(
+              color: Colors.blue[200],
+              width: 8,
+            ),
+          ),
+          margin: EdgeInsets.all(2),
+          child: Image(
+            image: AssetImage(imageAsset),
+            width: imageSize,
+            height: imageSize,
+            fit: BoxFit.fill
+          ),
+        ),
+        onPressed: () {
+          myProvider.updateImage = image;
+        },
+      ),
+    );
+  }
+
+  Container _buildImageSelector(Data myProvider) {
+    if (myProvider.images.length == 0) {
+      getImagesList(myProvider);
+    }
+    List images = myProvider.images;
+
+    return Container(
+      padding: EdgeInsets.all(5),
+      child: ListView(
+        children: [
+          for (var image in images)
+            _buildImageSelectorItem(myProvider, image),
+        ],
+      ),
+    );
+  }
+
+  Container _buildGameWidget(Data myProvider) {
+    double imageSize = 250;
+    String imageAsset = 'assets/images/'+myProvider.image+'.png';
+
+    return Container(
+      child: Column(
+        mainAxisSize: MainAxisSize.min,
+        mainAxisAlignment: MainAxisAlignment.center,
+        children: [
+          Container(
+            margin: EdgeInsets.all(4),
+            padding: EdgeInsets.all(4),
+            decoration: BoxDecoration(
+              color: Colors.blue,
+              borderRadius: BorderRadius.circular(4),
+              border: Border.all(
+                color: Colors.green,
+                width: 4,
+              ),
+            ),
+            child: Image(
+              image: AssetImage(imageAsset),
+              width: imageSize,
+              height: imageSize,
+              fit: BoxFit.fill
+            ),
+          ),
+        ],
+      ),
+    );
+  }
+
   @override
   Widget build(BuildContext context) {
     Data _myProvider = Provider.of<Data>(context);
 
     return Scaffold(
       appBar: AppBar(
-        title: Text('Puzzle game'),
+        title: Text('Puzzle'),
+        actions: <Widget>[
+          _myProvider.image == ''
+          ? Text('')
+          : IconButton(
+            icon: const Icon(Icons.arrow_left_outlined),
+            onPressed: () => resetGame(_myProvider),
+          ),
+        ],
       ),
-      body: Center(
-        child: Column(
-          mainAxisAlignment: MainAxisAlignment.center,
-          children: <Widget>[
-            Container(
-              child: Column(
-                mainAxisSize: MainAxisSize.min,
-                mainAxisAlignment: MainAxisAlignment.center,
-                children: [
-                  Container(
-                    margin: EdgeInsets.all(4),
-                    padding: EdgeInsets.all(4),
-                    decoration: BoxDecoration(
-                      color: Colors.blue,
-                      borderRadius: BorderRadius.circular(4),
-                      border: Border.all(
-                        color: Colors.green,
-                        width: 4,
-                      ),
-                    ),
-                    child: FlatButton(
-                      child: Text(
-                        '🎲',
-                        textAlign: TextAlign.center,
-                        style: TextStyle(
-                          fontSize: 50,
-                          fontWeight: FontWeight.w600,
-                          color: Colors.black,
-                        ),
-                      ),
-                    ),
-                  ),
-                ],
-              ),
-            ),
-          ],
+      body: SafeArea(
+        child: Center(
+          child: _myProvider.image == ''
+            ? _buildImageSelector(_myProvider)
+            : _buildGameWidget(_myProvider),
         ),
-      ),
+      )
     );
   }
 }
diff --git a/lib/utils/get_images_list.dart b/lib/utils/get_images_list.dart
new file mode 100644
index 0000000000000000000000000000000000000000..b0498796164a7da03a5cf5a7423526470b06e94b
--- /dev/null
+++ b/lib/utils/get_images_list.dart
@@ -0,0 +1,31 @@
+import 'dart:async';
+import 'dart:convert';
+import 'package:flutter/services.dart';
+import 'dart:math' show Random;
+
+class GetImagesList {
+  GetImagesList();
+
+  List _images;
+
+  init() async {
+    await imagesFromLocalFile();
+  }
+
+  Future<void> imagesFromLocalFile() async {
+    String jsonString;
+    try {
+      jsonString = await rootBundle.loadString('assets/files/images.json');
+      final jsonResponse = await json.decode(jsonString);
+      List imagesList = jsonResponse['images'];
+      _images = imagesList;
+    } catch (e) {
+      _images = [];
+    }
+
+    // Remove empty images
+    _images.removeWhere((value) => (value == ''));
+  }
+
+  List get images => _images;
+}
diff --git a/pubspec.yaml b/pubspec.yaml
index 2f3c8064f6121adac1db4dcefe0e513a1a02a215..b580f698c318185ea50c34247f965dc1cec08ec3 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -19,3 +19,4 @@ flutter:
   uses-material-design: true
   assets:
     - assets/files/
+    - assets/images/