diff --git a/src/bitmessagekivy/kv/msg_composer.kv b/src/bitmessagekivy/kv/msg_composer.kv
index 5222b8cd..2825b415 100644
--- a/src/bitmessagekivy/kv/msg_composer.kv
+++ b/src/bitmessagekivy/kv/msg_composer.kv
@@ -35,7 +35,7 @@
                 BoxLayout:
                     size_hint_y: None
                     height: dp(40)
-                    IdentitySpinner:
+                    CustomSpinner:
                         id: btn
                         background_color: app.theme_cls.primary_dark
                         values: app.variable_1
@@ -79,7 +79,7 @@
                         if root.is_camara_attached(): app.set_screen('scanscreen')
                         else: root.camera_alert()
                     on_press:
-                        app.root.ids.id_scanscreen.get_screen('composer')
+                        app.root.ids.is_scanscreen.get_screen('composer')
 
             MyMDTextField:
                 id: subject
diff --git a/src/bitmessagekivy/main.kv b/src/bitmessagekivy/main.kv
index f2fb4e09..1a27099b 100644
--- a/src/bitmessagekivy/main.kv
+++ b/src/bitmessagekivy/main.kv
@@ -108,7 +108,7 @@
                     height:"35dp"
                 NavigationItem:
                     height: dp(48)
-                    IdentitySpinner:
+                    CustomSpinner:
                         id: identity_dropdown
                         pos_hint:{"x":0,"y":0}
                         option_cls: Factory.get("MySpinnerOption")
@@ -223,7 +223,7 @@ MDNavigationLayout:
         Sent:
             id:sc4
         Trash:
-            id:id_trash
+            id:sc5
         Login:
             id:sc6
         Random:
@@ -247,7 +247,7 @@ MDNavigationLayout:
         Allmails:
             id:sc17
         ScanScreen:
-            id:id_scanscreen
+            id:is_scanscreen
 
     MDNavigationDrawer:
         id: nav_drawer
diff --git a/src/bitmessagekivy/mpybit.py b/src/bitmessagekivy/mpybit.py
index a16967fe..7e4399d2 100644
--- a/src/bitmessagekivy/mpybit.py
+++ b/src/bitmessagekivy/mpybit.py
@@ -7,16 +7,11 @@ Bitmessage android(mobile) interface
 """
 
 import os
-import json
-import importlib
 import logging
 from functools import partial
 
 from kivy.clock import Clock
 from kivy.lang import Builder
-from kivy.properties import (
-    ListProperty
-)
 from kivy.uix.boxlayout import BoxLayout
 
 from kivymd.app import MDApp
@@ -35,40 +30,16 @@ from pybitmessage.bitmessagekivy.base_navigation import (
     BaseNavigationDrawerSubheader, BaseContentNavigationDrawer,
     BaseIdentitySpinner
 )
-from pybitmessage.bmconfigparser import config
+from pybitmessage.bmconfigparser import config  # noqa: F401
 from pybitmessage.bitmessagekivy import identiconGeneration
 from pybitmessage.bitmessagekivy.get_platform import platform
-from pybitmessage.bitmessagekivy.baseclass.common import toast
+from pybitmessage.bitmessagekivy.baseclass.common import toast, load_image_path, get_identity_list
+from pybitmessage.bitmessagekivy.load_kivy_screens_data import load_screen_json
+
 from pybitmessage.bitmessagekivy.baseclass.popup import AddAddressPopup
 
 logger = logging.getLogger('default')
 
-data_screen_dict = {}
-
-
-def load_screen_json(data_file="screens_data.json"):
-    """Load screens data from json"""
-
-    with open(os.path.join(os.path.dirname(__file__), data_file)) as read_file:
-        all_data = json.load(read_file)
-        data_screens = list(all_data.keys())
-
-    for key in all_data:
-        if all_data[key]['Import']:
-            import_data = all_data.get(key)['Import']
-            import_to = import_data.split("import")[1].strip()
-            import_from = import_data.split("import")[0].split('from')[1].strip()
-            data_screen_dict[import_to] = importlib.import_module(import_from, import_to)
-    return data_screens, all_data, 'success'
-
-
-def get_identity_list():
-    """Get list of identities and access 'identity_list' variable in .kv file"""
-    identity_list = ListProperty(
-        addr for addr in config.addresses() if config.getboolean(str(addr), 'enabled')
-    )
-    return identity_list
-
 
 class Lang(BaseLanguage):
     """UI Language"""
@@ -110,13 +81,14 @@ class NavigateApp(MDApp):
 
     title = "PyBitmessage"
     identity_list = get_identity_list()
-    image_path = KivyStateVariables().image_dir
+    image_path = load_image_path()
     tr = Lang("en")  # for changing in franch replace en with fr
 
     def __init__(self):
         super(NavigateApp, self).__init__()
-        self.data_screens, self.all_data, response = load_screen_json()
+        self.data_screens, self.all_data, self.data_screen_dict, response = load_screen_json()
         self.kivy_state_obj = KivyStateVariables()
+        self.image_dir = load_image_path()
 
     def build(self):
         """Method builds the widget"""
@@ -224,7 +196,7 @@ class NavigateApp(MDApp):
         """This method is rotating loader for few seconds"""
         if instance.text == 'Trash':
             self.root.ids.id_trash.clear_widgets()
-            self.root.ids.id_trash.add_widget(data_screen_dict['Trash'].Trash())
+            self.root.ids.id_trash.add_widget(self.data_screen_dict['Trash'].Trash())
             try:
                 self.root.ids.id_trash.children[1].active = False
             except Exception as e:
diff --git a/src/bitmessagekivy/tests/test_load_screen_data_file.py b/src/bitmessagekivy/tests/test_load_screen_data_file.py
index 7f394a02..0a7556d0 100644
--- a/src/bitmessagekivy/tests/test_load_screen_data_file.py
+++ b/src/bitmessagekivy/tests/test_load_screen_data_file.py
@@ -1,6 +1,6 @@
 
 import unittest
-from pybitmessage.bitmessagekivy.mpybit import load_screen_json
+from pybitmessage.bitmessagekivy.load_kivy_screens_data import load_screen_json
 from .common import skip_screen_checks
 from .common import ordered