diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cb0763c332a05756857459de3655c726e81ec2ea..11ee0a1c3e572d07d4c39a47e32e80ec4a58df9a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -31,17 +31,17 @@
         android:theme="@style/Theme.AndroidHIT"
         tools:targetApi="31">
         <activity
-            android:name=".LoginActivity"
+            android:name=".ui.login.LoginActivity"
             android:exported="false" />
         <activity
-            android:name=".DetailTransactionActivity"
+            android:name=".ui.transaction.DetailTransactionActivity"
             android:exported="false" />
         <activity
             android:name=".MainActivity"
             android:exported="false" />
 
         <activity
-            android:name=".BondoManSplashScreen"
+            android:name=".ui.splash_screen.BondoManSplashScreen"
             android:exported="true"
             android:theme="@style/Theme.Design.Light.NoActionBar">
             <intent-filter>
@@ -50,7 +50,7 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-        <service android:name=".CheckJWTBackground"/>
+        <service android:name=".utils.CheckJWTBackground"/>
         <provider
             android:name="androidx.core.content.FileProvider"
             android:authorities="com.example.android_hit.fileprovider"
diff --git a/app/src/main/java/com/example/android_hit/HeaderGraphs.kt b/app/src/main/java/com/example/android_hit/HeaderGraphs.kt
deleted file mode 100644
index ba03b663871441ca1982c732470c02337b4a0219..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/example/android_hit/HeaderGraphs.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderGraphs.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderGraphs : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_graphs, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderGraphs.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderGraphs().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/HeaderNetwork.kt b/app/src/main/java/com/example/android_hit/HeaderNetwork.kt
deleted file mode 100644
index c5409f42afb2c1351f5f6160fe54b9049c590df8..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/example/android_hit/HeaderNetwork.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderNetwork.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderNetwork : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_network, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderNetwork.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderNetwork().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/HeaderScan.kt b/app/src/main/java/com/example/android_hit/HeaderScan.kt
deleted file mode 100644
index e92e74145ff2d357ff669faa38c44c6ee247f8ce..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/example/android_hit/HeaderScan.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderScan.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderScan : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_scan, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderScan.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderScan().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/HeaderSettings.kt b/app/src/main/java/com/example/android_hit/HeaderSettings.kt
deleted file mode 100644
index 83efb8130067881fc1895e4b33b8c1c71f0e6d93..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/example/android_hit/HeaderSettings.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderSettings.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderSettings : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_settings, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderSettings.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderSettings().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/HeaderTransaction.kt b/app/src/main/java/com/example/android_hit/HeaderTransaction.kt
deleted file mode 100644
index 10d9657a06df2a8e1b91f8c71ab75bc1f73e02a5..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/example/android_hit/HeaderTransaction.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderTransaction.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderTransaction : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_transaction, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderTransaction.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderTransaction().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/HeaderTwibbon.kt b/app/src/main/java/com/example/android_hit/HeaderTwibbon.kt
deleted file mode 100644
index ed71eb162eb3f540d87944ce7f2a7cc657a1340d..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/example/android_hit/HeaderTwibbon.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderTwibbon.newInstance] factory method to
- * create an instance of this fragment.
- */
-class HeaderTwibbon : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_header_twibbon, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderTwibbon.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            HeaderTwibbon().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/MainActivity.kt b/app/src/main/java/com/example/android_hit/MainActivity.kt
index 23388d2b9bad5e0cd924afb55d58022b732b940a..eedf0bee19a269135db155558669d5bd4fc8b95f 100644
--- a/app/src/main/java/com/example/android_hit/MainActivity.kt
+++ b/app/src/main/java/com/example/android_hit/MainActivity.kt
@@ -13,7 +13,20 @@ import com.example.android_hit.data.LoginPayload
 import com.example.android_hit.data.LoginResponse
 import com.example.android_hit.data.TokenResponse
 import com.example.android_hit.databinding.ActivityMainBinding
+import com.example.android_hit.ui.graph.Graphs
+import com.example.android_hit.ui.graph.HeaderGraphs
+import com.example.android_hit.ui.login.LoginActivity
+import com.example.android_hit.ui.scan.HeaderScan
+import com.example.android_hit.ui.scan.Scan
+import com.example.android_hit.ui.setting.HeaderSettings
+import com.example.android_hit.ui.setting.Settings
+import com.example.android_hit.ui.transaction.HeaderTransaction
+import com.example.android_hit.ui.transaction.Transaction
+import com.example.android_hit.ui.twibbon.FragmentTwibbon
+import com.example.android_hit.ui.twibbon.HeaderTwibbon
+import com.example.android_hit.utils.CheckJWTBackground
 import com.example.android_hit.utils.CryptoManager
+import com.example.android_hit.utils.NetworkManager
 import com.example.android_hit.utils.TokenManager
 import com.example.android_hit.utils.UserManager
 import retrofit2.Call
diff --git a/app/src/main/java/com/example/android_hit/NetworkError.kt b/app/src/main/java/com/example/android_hit/NetworkError.kt
deleted file mode 100644
index faeceb8f15ff12b5053691bdf56386fb81e54473..0000000000000000000000000000000000000000
--- a/app/src/main/java/com/example/android_hit/NetworkError.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.example.android_hit
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
-/**
- * A simple [Fragment] subclass.
- * Use the [NetworkError.newInstance] factory method to
- * create an instance of this fragment.
- */
-class NetworkError : Fragment() {
-    // TODO: Rename and change types of parameters
-    private var param1: String? = null
-    private var param2: String? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        arguments?.let {
-            param1 = it.getString(ARG_PARAM1)
-            param2 = it.getString(ARG_PARAM2)
-        }
-    }
-
-    override fun onCreateView(
-        inflater: LayoutInflater, container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        // Inflate the layout for this fragment
-        return inflater.inflate(R.layout.fragment_network_error, container, false)
-    }
-
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment NetworkError.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            NetworkError().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/adapter/TransactionAdapter.kt b/app/src/main/java/com/example/android_hit/adapter/TransactionAdapter.kt
index 222f10956ca194d13832072cfb32cb64a24a5b59..04766cd5285db45e73da1c990247bf5018b358ff 100644
--- a/app/src/main/java/com/example/android_hit/adapter/TransactionAdapter.kt
+++ b/app/src/main/java/com/example/android_hit/adapter/TransactionAdapter.kt
@@ -7,7 +7,7 @@ import android.view.ViewGroup
 import androidx.core.content.ContextCompat
 import androidx.core.content.ContextCompat.startActivity
 import androidx.recyclerview.widget.RecyclerView
-import com.example.android_hit.DetailTransactionActivity
+import com.example.android_hit.ui.transaction.DetailTransactionActivity
 import com.example.android_hit.R
 import com.example.android_hit.databinding.RowTransactionBinding
 import com.example.android_hit.room.TransactionEntity
diff --git a/app/src/main/java/com/example/android_hit/Graphs.kt b/app/src/main/java/com/example/android_hit/ui/graph/Graphs.kt
similarity index 97%
rename from app/src/main/java/com/example/android_hit/Graphs.kt
rename to app/src/main/java/com/example/android_hit/ui/graph/Graphs.kt
index 623317f34773541b9a1c822dde038559abd04555..299f47dac5507b7373e19ea0c4629b364d2eac4a 100644
--- a/app/src/main/java/com/example/android_hit/Graphs.kt
+++ b/app/src/main/java/com/example/android_hit/ui/graph/Graphs.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.graph
 
 
 import java.text.NumberFormat
@@ -10,6 +10,7 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import androidx.fragment.app.Fragment
+import com.example.android_hit.R
 import com.example.android_hit.adapter.TransactionAdapter
 import com.example.android_hit.databinding.FragmentGraphsBinding
 import com.example.android_hit.room.TransactionDB
@@ -20,7 +21,6 @@ import com.github.mikephil.charting.components.Legend
 import com.github.mikephil.charting.data.PieData
 import com.github.mikephil.charting.data.PieDataSet
 import com.github.mikephil.charting.data.PieEntry
-import com.github.mikephil.charting.formatter.PercentFormatter
 
 
 class Graphs : Fragment() {
diff --git a/app/src/main/java/com/example/android_hit/ui/graph/HeaderGraphs.kt b/app/src/main/java/com/example/android_hit/ui/graph/HeaderGraphs.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ba9c06de7c3f7d75e0ed4e0e7886b1509c96a483
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/graph/HeaderGraphs.kt
@@ -0,0 +1,26 @@
+package com.example.android_hit.ui.graph
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.android_hit.R
+
+
+class HeaderGraphs : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_graphs, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/LoginActivity.kt b/app/src/main/java/com/example/android_hit/ui/login/LoginActivity.kt
similarity index 92%
rename from app/src/main/java/com/example/android_hit/LoginActivity.kt
rename to app/src/main/java/com/example/android_hit/ui/login/LoginActivity.kt
index b0e6e364867b5065249cce710164ed0418cd942f..2d244d26b9892195359ab01c1349138bbe7b3d8d 100644
--- a/app/src/main/java/com/example/android_hit/LoginActivity.kt
+++ b/app/src/main/java/com/example/android_hit/ui/login/LoginActivity.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.login
 
 import android.app.AlertDialog
 import android.content.Intent
@@ -7,6 +7,9 @@ import android.view.View
 import android.widget.Button
 import androidx.appcompat.app.AppCompatActivity
 import androidx.fragment.app.FragmentManager
+import com.example.android_hit.utils.CheckJWTBackground
+import com.example.android_hit.MainActivity
+import com.example.android_hit.R
 import com.example.android_hit.utils.TokenManager
 
 class LoginActivity : AppCompatActivity() {
diff --git a/app/src/main/java/com/example/android_hit/LoginFragment.kt b/app/src/main/java/com/example/android_hit/ui/login/LoginFragment.kt
similarity index 96%
rename from app/src/main/java/com/example/android_hit/LoginFragment.kt
rename to app/src/main/java/com/example/android_hit/ui/login/LoginFragment.kt
index 6427577f47c10230aaff45812a456890924d877c..1bd20e5ddc3b08dd6547af56004a9facf67b7c79 100644
--- a/app/src/main/java/com/example/android_hit/LoginFragment.kt
+++ b/app/src/main/java/com/example/android_hit/ui/login/LoginFragment.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.login
 
 import android.annotation.SuppressLint
 import android.content.Context
@@ -13,6 +13,9 @@ import android.widget.Button
 import android.widget.EditText
 import android.widget.Toast
 import androidx.fragment.app.Fragment
+import com.example.android_hit.utils.CheckJWTBackground
+import com.example.android_hit.MainActivity
+import com.example.android_hit.R
 import com.example.android_hit.api.RetrofitClient
 import com.example.android_hit.data.LoginPayload
 import com.example.android_hit.data.LoginResponse
diff --git a/app/src/main/java/com/example/android_hit/ui/network/HeaderNetwork.kt b/app/src/main/java/com/example/android_hit/ui/network/HeaderNetwork.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b6713206c569c002d0a9694cb9341b9063ef0b4b
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/network/HeaderNetwork.kt
@@ -0,0 +1,26 @@
+package com.example.android_hit.ui.network
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.example.android_hit.R
+
+
+class HeaderNetwork : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_network, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/ui/network/NetworkError.kt b/app/src/main/java/com/example/android_hit/ui/network/NetworkError.kt
new file mode 100644
index 0000000000000000000000000000000000000000..36b2847dc75689516fd96968ce9a9558eb4d3989
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/network/NetworkError.kt
@@ -0,0 +1,25 @@
+package com.example.android_hit.ui.network
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import com.example.android_hit.R
+
+
+class NetworkError : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_network_error, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/ui/scan/HeaderScan.kt b/app/src/main/java/com/example/android_hit/ui/scan/HeaderScan.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e5a9064dea29851c6500d1d96900ff83ee3345be
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/scan/HeaderScan.kt
@@ -0,0 +1,26 @@
+package com.example.android_hit.ui.scan
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.android_hit.R
+
+
+class HeaderScan : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_scan, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/Scan.kt b/app/src/main/java/com/example/android_hit/ui/scan/Scan.kt
similarity index 99%
rename from app/src/main/java/com/example/android_hit/Scan.kt
rename to app/src/main/java/com/example/android_hit/ui/scan/Scan.kt
index 7ed471b90393f1fac2eca9360668848c5e06930c..70188abd6b40ed12ed68a24f0a9f9dee14b181da 100644
--- a/app/src/main/java/com/example/android_hit/Scan.kt
+++ b/app/src/main/java/com/example/android_hit/ui/scan/Scan.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.scan
 
 import android.Manifest
 import android.app.Activity
@@ -27,6 +27,7 @@ import androidx.activity.result.contract.ActivityResultContracts
 import androidx.core.app.ActivityCompat
 import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
+import com.example.android_hit.R
 import com.example.android_hit.api.RetrofitClient
 import com.example.android_hit.data.ScanResponse
 import com.example.android_hit.room.TransactionDB
diff --git a/app/src/main/java/com/example/android_hit/ui/setting/HeaderSettings.kt b/app/src/main/java/com/example/android_hit/ui/setting/HeaderSettings.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e2608b9822c6ebf25cf620fb97e1ade6526035e0
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/setting/HeaderSettings.kt
@@ -0,0 +1,25 @@
+package com.example.android_hit.ui.setting
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.android_hit.R
+
+
+class HeaderSettings : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_settings, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/Settings.kt b/app/src/main/java/com/example/android_hit/ui/setting/Settings.kt
similarity index 97%
rename from app/src/main/java/com/example/android_hit/Settings.kt
rename to app/src/main/java/com/example/android_hit/ui/setting/Settings.kt
index cd1fb776c1030aef912f2ee20f5e5b43431e081c..a7bdc2486a0db437b2d752fa03832e56802b33cc 100644
--- a/app/src/main/java/com/example/android_hit/Settings.kt
+++ b/app/src/main/java/com/example/android_hit/ui/setting/Settings.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.setting
 
 import android.Manifest
 import android.annotation.SuppressLint
@@ -20,8 +20,12 @@ import androidx.core.content.ContextCompat
 import androidx.core.content.FileProvider
 import androidx.fragment.app.Fragment
 import androidx.localbroadcastmanager.content.LocalBroadcastManager
+import com.example.android_hit.utils.CheckJWTBackground
+import com.example.android_hit.ui.login.LoginActivity
+import com.example.android_hit.R
 import com.example.android_hit.room.TransactionDB
 import com.example.android_hit.room.TransactionEntity
+import com.example.android_hit.ui.transaction.DetailTransactionActivity
 import com.example.android_hit.utils.TokenManager
 import com.example.android_hit.utils.UserManager
 import org.apache.poi.hssf.usermodel.HSSFWorkbook
diff --git a/app/src/main/java/com/example/android_hit/BondoManSplashScreen.kt b/app/src/main/java/com/example/android_hit/ui/splash_screen/BondoManSplashScreen.kt
similarity index 81%
rename from app/src/main/java/com/example/android_hit/BondoManSplashScreen.kt
rename to app/src/main/java/com/example/android_hit/ui/splash_screen/BondoManSplashScreen.kt
index be9bcb1818d35f24e99c57e12293d2150348e2c1..00fcff98a4b790294121cf388f6673a7204ff3dd 100644
--- a/app/src/main/java/com/example/android_hit/BondoManSplashScreen.kt
+++ b/app/src/main/java/com/example/android_hit/ui/splash_screen/BondoManSplashScreen.kt
@@ -1,8 +1,10 @@
-package com.example.android_hit
+package com.example.android_hit.ui.splash_screen
 
 import android.content.Intent
 import androidx.appcompat.app.AppCompatActivity
 import android.os.Bundle
+import com.example.android_hit.ui.login.LoginActivity
+import com.example.android_hit.R
 import java.util.Timer
 import java.util.TimerTask
 
diff --git a/app/src/main/java/com/example/android_hit/DetailTransaction.kt b/app/src/main/java/com/example/android_hit/ui/transaction/DetailTransaction.kt
similarity index 97%
rename from app/src/main/java/com/example/android_hit/DetailTransaction.kt
rename to app/src/main/java/com/example/android_hit/ui/transaction/DetailTransaction.kt
index dfefc31f4d864fc79dd8201a594c83947ec6e600..77472776ba55a26094b5dcbab8a4f8252ade0e55 100644
--- a/app/src/main/java/com/example/android_hit/DetailTransaction.kt
+++ b/app/src/main/java/com/example/android_hit/ui/transaction/DetailTransaction.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.transaction
 
 import android.Manifest
 import android.app.Activity
@@ -23,6 +23,8 @@ import androidx.core.app.ActivityCompat
 import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
 import androidx.localbroadcastmanager.content.LocalBroadcastManager
+import com.example.android_hit.MainActivity
+import com.example.android_hit.R
 import com.example.android_hit.databinding.FragmentDetailTransactionBinding
 import com.example.android_hit.room.TransactionDB
 import com.example.android_hit.room.TransactionEntity
@@ -97,7 +99,9 @@ class DetailTransaction : Fragment(), LocationListener {
         binding.radioExpense.setOnCheckedChangeListener { _, isChecked ->
             if (isChecked) {
                 category = "Expense"
-                binding.radioExpense.setTextColor(ContextCompat.getColor(requireContext(), R.color.secondary4))
+                binding.radioExpense.setTextColor(ContextCompat.getColor(requireContext(),
+                    R.color.secondary4
+                ))
             } else {
                 binding.radioExpense.setTextColor(
                     ContextCompat.getColor(
@@ -111,7 +115,9 @@ class DetailTransaction : Fragment(), LocationListener {
         binding.radioIncome.setOnCheckedChangeListener { _, isChecked ->
             if (isChecked) {
                 category = "Income"
-                binding.radioIncome.setTextColor(ContextCompat.getColor(requireContext(), R.color.secondary5))
+                binding.radioIncome.setTextColor(ContextCompat.getColor(requireContext(),
+                    R.color.secondary5
+                ))
             } else {
                 binding.radioIncome.setTextColor(
                     ContextCompat.getColor(
@@ -122,7 +128,7 @@ class DetailTransaction : Fragment(), LocationListener {
             }
         }
 
-        if(amountInput!=""){
+        if(amountInput !=""){
             binding.inputAmount.setText(amountInput)
         }
         val intent = requireActivity().intent.extras
@@ -325,8 +331,8 @@ class DetailTransaction : Fragment(), LocationListener {
     override fun onDestroyView() {
         super.onDestroyView()
         _binding = null
-        amountInput=""
-        if(fragmentCounter>1){
+        amountInput =""
+        if(fragmentCounter >1){
             LocalBroadcastManager.getInstance(requireContext()).unregisterReceiver(transactionReceiver)
         }
     }
diff --git a/app/src/main/java/com/example/android_hit/DetailTransactionActivity.kt b/app/src/main/java/com/example/android_hit/ui/transaction/DetailTransactionActivity.kt
similarity index 91%
rename from app/src/main/java/com/example/android_hit/DetailTransactionActivity.kt
rename to app/src/main/java/com/example/android_hit/ui/transaction/DetailTransactionActivity.kt
index 69c9b01de29d0ca91db0bdfa12f5abf966b75b3e..e583981d4098979b85bba9d78989a48367fadd30 100644
--- a/app/src/main/java/com/example/android_hit/DetailTransactionActivity.kt
+++ b/app/src/main/java/com/example/android_hit/ui/transaction/DetailTransactionActivity.kt
@@ -1,8 +1,9 @@
-package com.example.android_hit
+package com.example.android_hit.ui.transaction
 
 import androidx.appcompat.app.AppCompatActivity
 import android.os.Bundle
 import androidx.fragment.app.Fragment
+import com.example.android_hit.R
 import com.example.android_hit.databinding.ActivityDetailTransactionBinding
 
 class DetailTransactionActivity : AppCompatActivity() {
diff --git a/app/src/main/java/com/example/android_hit/HeaderDetailTransaction.kt b/app/src/main/java/com/example/android_hit/ui/transaction/HeaderDetailTransaction.kt
similarity index 52%
rename from app/src/main/java/com/example/android_hit/HeaderDetailTransaction.kt
rename to app/src/main/java/com/example/android_hit/ui/transaction/HeaderDetailTransaction.kt
index 3c645149b8ee7d10c1b73170c82bb90be3f8228b..64fdbfa51f892f835cde60aa6506e782576d86a2 100644
--- a/app/src/main/java/com/example/android_hit/HeaderDetailTransaction.kt
+++ b/app/src/main/java/com/example/android_hit/ui/transaction/HeaderDetailTransaction.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.transaction
 
 import android.content.Intent
 import android.os.Bundle
@@ -6,18 +6,11 @@ import androidx.fragment.app.Fragment
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import com.example.android_hit.MainActivity
+import com.example.android_hit.R
 import com.example.android_hit.databinding.FragmentHeaderDetailTransactionBinding
 
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
 
-/**
- * A simple [Fragment] subclass.
- * Use the [HeaderDetailTransaction.newInstance] factory method to
- * create an instance of this fragment.
- */
 class HeaderDetailTransaction : Fragment() {
     private var _binding: FragmentHeaderDetailTransactionBinding? = null
     private val binding get() = _binding!!
@@ -39,22 +32,5 @@ class HeaderDetailTransaction : Fragment() {
         }
     }
 
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment HeaderDetailTransaction.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic fun newInstance(param1: String, param2: String) =
-                HeaderDetailTransaction().apply {
-                    arguments = Bundle().apply {
-                        putString(ARG_PARAM1, param1)
-                        putString(ARG_PARAM2, param2)
-                    }
-                }
-    }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/ui/transaction/HeaderTransaction.kt b/app/src/main/java/com/example/android_hit/ui/transaction/HeaderTransaction.kt
new file mode 100644
index 0000000000000000000000000000000000000000..30005de530a207b32ec81724890e60ccf35c6365
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/transaction/HeaderTransaction.kt
@@ -0,0 +1,26 @@
+package com.example.android_hit.ui.transaction
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.android_hit.R
+
+
+class HeaderTransaction : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_transaction, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/Transaction.kt b/app/src/main/java/com/example/android_hit/ui/transaction/Transaction.kt
similarity index 78%
rename from app/src/main/java/com/example/android_hit/Transaction.kt
rename to app/src/main/java/com/example/android_hit/ui/transaction/Transaction.kt
index 3658c4469e2dd5d926e5ca722d920cc448ac43c4..477a666790042f7f32036c0586799d1474b5341c 100644
--- a/app/src/main/java/com/example/android_hit/Transaction.kt
+++ b/app/src/main/java/com/example/android_hit/ui/transaction/Transaction.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.transaction
 
 import android.content.Intent
 import android.os.Bundle
@@ -17,16 +17,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton
 import java.text.NumberFormat
 import java.util.Locale
 
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
 
-/**
- * A simple [Fragment] subclass.
- * Use the [Transaction.newInstance] factory method to
- * create an instance of this fragment.
- */
 class Transaction : Fragment() {
     private lateinit var binding: FragmentTransactionBinding
     private lateinit var recyclerView: RecyclerView
@@ -109,23 +100,5 @@ class Transaction : Fragment() {
         super.onResume()
         getData()
     }
-    companion object {
-        /**
-         * Use this factory method to create a new instance of
-         * this fragment using the provided parameters.
-         *
-         * @param param1 Parameter 1.
-         * @param param2 Parameter 2.
-         * @return A new instance of fragment Transaction.
-         */
-        // TODO: Rename and change types and number of parameters
-        @JvmStatic
-        fun newInstance(param1: String, param2: String) =
-            Transaction().apply {
-                arguments = Bundle().apply {
-                    putString(ARG_PARAM1, param1)
-                    putString(ARG_PARAM2, param2)
-                }
-            }
-    }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/FragmentTwibbon.kt b/app/src/main/java/com/example/android_hit/ui/twibbon/FragmentTwibbon.kt
similarity index 99%
rename from app/src/main/java/com/example/android_hit/FragmentTwibbon.kt
rename to app/src/main/java/com/example/android_hit/ui/twibbon/FragmentTwibbon.kt
index e9ef312d09be3df64e12ac5720c756913bcc63c9..600e1939c6fb7727ff680b2cb525a4df34f59aac 100644
--- a/app/src/main/java/com/example/android_hit/FragmentTwibbon.kt
+++ b/app/src/main/java/com/example/android_hit/ui/twibbon/FragmentTwibbon.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.ui.twibbon
 
 import android.annotation.SuppressLint
 import android.app.Activity
diff --git a/app/src/main/java/com/example/android_hit/ui/twibbon/HeaderTwibbon.kt b/app/src/main/java/com/example/android_hit/ui/twibbon/HeaderTwibbon.kt
new file mode 100644
index 0000000000000000000000000000000000000000..a616cfb49fa99949ea5ceb515ae21956f9642dc6
--- /dev/null
+++ b/app/src/main/java/com/example/android_hit/ui/twibbon/HeaderTwibbon.kt
@@ -0,0 +1,24 @@
+package com.example.android_hit.ui.twibbon
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.android_hit.R
+
+
+class HeaderTwibbon : Fragment() {
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+    }
+    override fun onCreateView(
+        inflater: LayoutInflater, container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        // Inflate the layout for this fragment
+        return inflater.inflate(R.layout.fragment_header_twibbon, container, false)
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/android_hit/CheckJWTBackground.kt b/app/src/main/java/com/example/android_hit/utils/CheckJWTBackground.kt
similarity index 96%
rename from app/src/main/java/com/example/android_hit/CheckJWTBackground.kt
rename to app/src/main/java/com/example/android_hit/utils/CheckJWTBackground.kt
index 5cb54e18dcd497b92718812c51c0823c26650fc7..a9b642308e09ee9db599411fda1e73b08529e6d4 100644
--- a/app/src/main/java/com/example/android_hit/CheckJWTBackground.kt
+++ b/app/src/main/java/com/example/android_hit/utils/CheckJWTBackground.kt
@@ -1,11 +1,11 @@
-package com.example.android_hit
+package com.example.android_hit.utils
 
 import android.app.Service
 import android.content.Intent
 import android.os.Handler
 import android.os.IBinder
 import android.util.Log
-import com.example.android_hit.utils.TokenManager
+import com.example.android_hit.MainActivity
 import kotlin.concurrent.thread
 
 class CheckJWTBackground:Service() {
diff --git a/app/src/main/java/com/example/android_hit/NetworkManager.kt b/app/src/main/java/com/example/android_hit/utils/NetworkManager.kt
similarity index 98%
rename from app/src/main/java/com/example/android_hit/NetworkManager.kt
rename to app/src/main/java/com/example/android_hit/utils/NetworkManager.kt
index 1d474c623dd9902b7dcfa222aa7aba404c714239..66113730cedabe48f8b71ea6aa0f88552f453bb8 100644
--- a/app/src/main/java/com/example/android_hit/NetworkManager.kt
+++ b/app/src/main/java/com/example/android_hit/utils/NetworkManager.kt
@@ -1,4 +1,4 @@
-package com.example.android_hit
+package com.example.android_hit.utils
 
 import android.content.Context
 import android.net.ConnectivityManager
diff --git a/app/src/main/res/layout-land/fragment_detail_transaction.xml b/app/src/main/res/layout-land/fragment_detail_transaction.xml
index 9bed128a3bcfbbe8e9452dbc3a2730297114f2de..5629c00b77aaf190051b91674eb5f890aa39b4f2 100644
--- a/app/src/main/res/layout-land/fragment_detail_transaction.xml
+++ b/app/src/main/res/layout-land/fragment_detail_transaction.xml
@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    tools:context=".DetailTransaction">
+    tools:context=".ui.transaction.DetailTransaction">
 
     <ScrollView
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout-land/fragment_graphs.xml b/app/src/main/res/layout-land/fragment_graphs.xml
index 1536bad50100b323228d9259f2b0f3fd383923fa..29a1ef0c6631760dea898c7860c3ad9bc7bbc4fb 100644
--- a/app/src/main/res/layout-land/fragment_graphs.xml
+++ b/app/src/main/res/layout-land/fragment_graphs.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Graphs">
+    tools:context=".ui.graph.Graphs">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout-land/fragment_scan.xml b/app/src/main/res/layout-land/fragment_scan.xml
index 550ff95d124acf0af793593cf619bb62824f9a27..1b913241c12aafbccf0d13dd5c7de81da16fd465 100644
--- a/app/src/main/res/layout-land/fragment_scan.xml
+++ b/app/src/main/res/layout-land/fragment_scan.xml
@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Scan">
+    tools:context=".ui.scan.Scan">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout-land/fragment_settings.xml b/app/src/main/res/layout-land/fragment_settings.xml
index 65af9cafccf0f2e866469a2827ef12e69769bd8c..8f2151037157e1efa51d0bad9d8f283e8a31c251 100644
--- a/app/src/main/res/layout-land/fragment_settings.xml
+++ b/app/src/main/res/layout-land/fragment_settings.xml
@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Settings">
+    tools:context=".ui.setting.Settings">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout-land/fragment_transaction.xml b/app/src/main/res/layout-land/fragment_transaction.xml
index ef8b5a5b559d95cfe047a58fa7fe1176cb4a7e16..f4ac546f0f635e6a1e5ca376d8e5f4ef9bb02330 100644
--- a/app/src/main/res/layout-land/fragment_transaction.xml
+++ b/app/src/main/res/layout-land/fragment_transaction.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Transaction">
+    tools:context=".ui.transaction.Transaction">
 
     <ScrollView
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout-land/fragment_twibbon.xml b/app/src/main/res/layout-land/fragment_twibbon.xml
index 723cced1c5ab4383714bb57a5432e8f95627f87f..7d7e063673c3a5d8f1d8d7fc33551d868747fc60 100644
--- a/app/src/main/res/layout-land/fragment_twibbon.xml
+++ b/app/src/main/res/layout-land/fragment_twibbon.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".FragmentTwibbon">
+    tools:context=".ui.twibbon.FragmentTwibbon">
 
 
     <FrameLayout
diff --git a/app/src/main/res/layout/activity_bondo_man_splash_screen.xml b/app/src/main/res/layout/activity_bondo_man_splash_screen.xml
index 7b5e12cc0213adf901e658fd37c9d7e766ea05dc..7182db26e0849cc130ec6c6e10c88d4606fef94c 100644
--- a/app/src/main/res/layout/activity_bondo_man_splash_screen.xml
+++ b/app/src/main/res/layout/activity_bondo_man_splash_screen.xml
@@ -8,7 +8,7 @@
     android:background="@drawable/background_gradient_splashscreen"
     android:gravity="center_horizontal"
     android:orientation="vertical"
-    tools:context=".BondoManSplashScreen">
+    tools:context=".ui.splash_screen.BondoManSplashScreen">
 
     <ImageView
         android:id="@+id/imageView2"
diff --git a/app/src/main/res/layout/activity_detail_transaction.xml b/app/src/main/res/layout/activity_detail_transaction.xml
index 03af554a896712a01a4522465f7a44192d37ff11..3f6e6a17770501a7cb8eb8a185d15a0c13b23e91 100644
--- a/app/src/main/res/layout/activity_detail_transaction.xml
+++ b/app/src/main/res/layout/activity_detail_transaction.xml
@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/primary_color_4"
-    tools:context=".DetailTransactionActivity">
+    tools:context=".ui.transaction.DetailTransactionActivity">
 
     <FrameLayout
         android:id="@+id/header_layout"
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 64d347f1366a83a93c4102473ef0c8b7dfe28e5d..05b1e832464d414cb400bb83fc9af4e7261f6fb6 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -6,7 +6,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/login_background"
-    tools:context=".LoginActivity">
+    tools:context=".ui.login.LoginActivity">
 
     <ImageView
         android:id="@+id/logoLogin"
diff --git a/app/src/main/res/layout/fragment_detail_transaction.xml b/app/src/main/res/layout/fragment_detail_transaction.xml
index 617269914565b8649c9ccf8f94730c254d2e4f7c..b5f5571bbe839f84059d89e70f92db2105077307 100644
--- a/app/src/main/res/layout/fragment_detail_transaction.xml
+++ b/app/src/main/res/layout/fragment_detail_transaction.xml
@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    tools:context=".DetailTransaction">
+    tools:context=".ui.transaction.DetailTransaction">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_graphs.xml b/app/src/main/res/layout/fragment_graphs.xml
index e2436c8874fdd9a59b1f61a8824f17294c2305dd..885624349a98e4672cd8560ae05fff15269daf5e 100644
--- a/app/src/main/res/layout/fragment_graphs.xml
+++ b/app/src/main/res/layout/fragment_graphs.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Graphs">
+    tools:context=".ui.graph.Graphs">
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_header_detail_transaction.xml b/app/src/main/res/layout/fragment_header_detail_transaction.xml
index b5734b61c996c724fd2ccc050d06c6ae8cc25cd7..2aeb3f4af54b68ced0e1a6902a2c70c3b738e539 100644
--- a/app/src/main/res/layout/fragment_header_detail_transaction.xml
+++ b/app/src/main/res/layout/fragment_header_detail_transaction.xml
@@ -4,7 +4,7 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="@color/primary_color_4"
-    tools:context=".HeaderDetailTransaction">
+    tools:context=".ui.transaction.HeaderDetailTransaction">
 
     <FrameLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml
index f8b28837e6bcf4e9f82edbabf8b70a7fd6c6ca59..0294f505294bb2feeb457b87739a5a304ff91b5e 100644
--- a/app/src/main/res/layout/fragment_login.xml
+++ b/app/src/main/res/layout/fragment_login.xml
@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/login_backgroud2"
-    tools:context=".LoginFragment">
+    tools:context=".ui.login.LoginFragment">
 
     <TextView
         android:id="@+id/backButton"
diff --git a/app/src/main/res/layout/fragment_network_error.xml b/app/src/main/res/layout/fragment_network_error.xml
index 130fe170d4cca4a32cc04993696af16542824426..a1214f652f30bf93909d9dee15fae1814d27dc26 100644
--- a/app/src/main/res/layout/fragment_network_error.xml
+++ b/app/src/main/res/layout/fragment_network_error.xml
@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".NetworkError">
+    tools:context=".ui.network.NetworkError">
 
     <!-- TODO: Update blank fragment layout -->
     <ImageView
diff --git a/app/src/main/res/layout/fragment_scan.xml b/app/src/main/res/layout/fragment_scan.xml
index 6b3b2041270613ca3db118bbbe7aeb9cc277caff..64ae7dff5d86101686f703a53fb925e460b27cce 100644
--- a/app/src/main/res/layout/fragment_scan.xml
+++ b/app/src/main/res/layout/fragment_scan.xml
@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Scan">
+    tools:context=".ui.scan.Scan">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index 1f780855b46b78e88ff0d8cef73d944f874a2900..a413a48a35a0fb9dcb50842851546fd02fedc880 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Settings">
+    tools:context=".ui.setting.Settings">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_transaction.xml b/app/src/main/res/layout/fragment_transaction.xml
index 89b3de33ad259fa0b0824b05cf518e7c47b7669e..dd47a2e2658622bcdf274119f0f8edcf14462756 100644
--- a/app/src/main/res/layout/fragment_transaction.xml
+++ b/app/src/main/res/layout/fragment_transaction.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".Transaction">
+    tools:context=".ui.transaction.Transaction">
 
     <ScrollView
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/fragment_twibbon.xml b/app/src/main/res/layout/fragment_twibbon.xml
index df0b146dd85a6501b71d6d92a8a3472b42024c08..3d2db2893915f8fa2cab015cfcb11cc788c3ebae 100644
--- a/app/src/main/res/layout/fragment_twibbon.xml
+++ b/app/src/main/res/layout/fragment_twibbon.xml
@@ -4,7 +4,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".FragmentTwibbon">
+    tools:context=".ui.twibbon.FragmentTwibbon">
 
 
     <FrameLayout
diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml
index 121252c803a5c391956582eeffcf22416cca265a..0a04f4374fb53649d43efb37cca61668aae6ad60 100644
--- a/app/src/main/res/navigation/nav_graph.xml
+++ b/app/src/main/res/navigation/nav_graph.xml
@@ -7,12 +7,12 @@
 
     <activity
         android:id="@+id/loginActivity2"
-        android:name="com.example.android_hit.LoginActivity"
+        android:name="com.example.android_hit.ui.login.LoginActivity"
         android:label="activity_login"
         tools:layout="@layout/activity_login" />
     <fragment
         android:id="@+id/loginFragment"
-        android:name="com.example.android_hit.LoginFragment"
+        android:name="com.example.android_hit.ui.login.LoginFragment"
         android:label="fragment_login"
         tools:layout="@layout/fragment_login" />
 </navigation>
\ No newline at end of file