diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt
index 3bd484ddb198fcd7c934173ec83caf05cb990ee5..88d64ef36a124fb2e7a944540da9f4ca8a2a2dd2 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt
@@ -7,12 +7,12 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ArrayAdapter
-import android.widget.TextView
 import android.widget.Toast
 import androidx.core.app.ActivityCompat
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import com.example.bondoyap.databinding.FragmentAddTransactionsBinding
+import com.example.bondoyap.ui.transactions.data.Transactions
 import com.google.android.gms.location.FusedLocationProviderClient
 import com.google.android.gms.location.LocationServices
 import java.text.SimpleDateFormat
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
index 025e2796bb9065f35490a6fa76392895cc5ebc36..f72aaec034e554588d337ae3b8a2d80d30291e71 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
@@ -2,16 +2,12 @@ package com.example.bondoyap.ui.transactions
 
 import android.R
 import android.app.AlertDialog
-import android.content.Intent
 import android.content.pm.PackageManager
 import android.location.Address
 import android.location.Geocoder
-import android.net.Uri
 import android.os.Bundle
 import android.os.Handler
 import android.os.Looper
-import android.text.Editable
-import android.text.Spannable
 import android.text.SpannableStringBuilder
 import android.view.LayoutInflater
 import android.view.View
@@ -19,12 +15,11 @@ import android.view.ViewGroup
 import android.widget.ArrayAdapter
 import android.widget.Toast
 import androidx.core.app.ActivityCompat
-import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import androidx.navigation.fragment.findNavController
-import com.example.bondoyap.databinding.FragmentAddTransactionsBinding
 import com.example.bondoyap.databinding.FragmentEditTransactionsBinding
+import com.example.bondoyap.ui.transactions.data.Transactions
 import com.google.android.gms.location.FusedLocationProviderClient
 import com.google.android.gms.location.LocationServices
 import kotlinx.coroutines.CoroutineScope
@@ -183,16 +178,20 @@ class EditTransactionsFragment : Fragment() {
                 binding.editTextNominal.text =
                     SpannableStringBuilder(transaction.nominal.toBigDecimal().toString())
 
-                val addresses: List<Address> =
-                    Geocoder(requireContext(), Locale.getDefault()).getFromLocation(
-                        transaction.latitude.toDouble(),
-                        transaction.longitude.toDouble(),
-                        1
-                    ) ?: emptyList()
-                if (addresses.isNotEmpty()) {
-                    val locationName = addresses[0].getAddressLine(0)
-                    Handler(Looper.getMainLooper()).post {
-                        binding.editTextLokasi.text = SpannableStringBuilder(locationName)
+                if (transaction.longitude.isEmpty() || transaction.latitude.isEmpty()) {
+                    binding.editTextLokasi.text = SpannableStringBuilder("Unavailable")
+                } else {
+                    val addresses: List<Address> =
+                        Geocoder(requireContext(), Locale.getDefault()).getFromLocation(
+                            transaction.latitude.toDouble(),
+                            transaction.longitude.toDouble(),
+                            1
+                        ) ?: emptyList()
+                    if (addresses.isNotEmpty()) {
+                        val locationName = addresses[0].getAddressLine(0)
+                        Handler(Looper.getMainLooper()).post {
+                            binding.editTextLokasi.text = SpannableStringBuilder(locationName)
+                        }
                     }
                 }
 
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsApplication.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsApplication.kt
index dd689b1fa840106ee0e113f1a93086fa7c113f14..0634b8129e6625beb80b829d449e8f6219f26988 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsApplication.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsApplication.kt
@@ -1,6 +1,8 @@
 package com.example.bondoyap.ui.transactions
 
 import android.app.Application
+import com.example.bondoyap.ui.transactions.data.TransactionsRepository
+import com.example.bondoyap.ui.transactions.data.TransactionsRoomDatabase
 
 class TransactionsApplication: Application() {
     val database by lazy { TransactionsRoomDatabase.getDatabase(this) }
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt
index 7ce3edd1637d5247920f3c1a07b148fd3fbf648e..6c5dce13bf504632c030d4a57aa4b6fc47b3991e 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt
@@ -16,11 +16,11 @@ import android.widget.Toast
 import androidx.cardview.widget.CardView
 import androidx.core.content.ContextCompat.startActivity
 import androidx.navigation.Navigation
-import androidx.navigation.fragment.findNavController
 import androidx.recyclerview.widget.DiffUtil
 import androidx.recyclerview.widget.ListAdapter
 import androidx.recyclerview.widget.RecyclerView
 import com.example.bondoyap.R
+import com.example.bondoyap.ui.transactions.data.Transactions
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsViewModel.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsViewModel.kt
index ff47645bc7e10fbd57dd6763bea0e072756dd0c7..012172e8ce21819fb181c307aa74520ef627be80 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsViewModel.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsViewModel.kt
@@ -3,15 +3,12 @@ package com.example.bondoyap.ui.transactions
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.Companion.APPLICATION_KEY
 import androidx.lifecycle.asLiveData
-import androidx.lifecycle.createSavedStateHandle
 import androidx.lifecycle.viewModelScope
-import androidx.lifecycle.viewmodel.CreationExtras
+import com.example.bondoyap.ui.transactions.data.Transactions
+import com.example.bondoyap.ui.transactions.data.TransactionsRepository
 import kotlinx.coroutines.Deferred
 import kotlinx.coroutines.async
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
 
 class TransactionsViewModel(
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/Transactions.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/data/Transactions.kt
similarity index 92%
rename from app/src/main/java/com/example/bondoyap/ui/transactions/Transactions.kt
rename to app/src/main/java/com/example/bondoyap/ui/transactions/data/Transactions.kt
index 33e0b82c9ffb70dfdbd28074a4c2e7ef886c5528..a5bddbd9edcc1d9bc8323ad08c4ae69d6949e37d 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/Transactions.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/data/Transactions.kt
@@ -1,4 +1,4 @@
-package com.example.bondoyap.ui.transactions
+package com.example.bondoyap.ui.transactions.data
 
 import androidx.room.ColumnInfo
 import androidx.room.Entity
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsDao.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/data/TransactionsDao.kt
similarity index 87%
rename from app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsDao.kt
rename to app/src/main/java/com/example/bondoyap/ui/transactions/data/TransactionsDao.kt
index 9d808a52834fa7b7c3d032707694ee4cc8de1a53..d09b3619c20f83a05fc1a292f450f720efc04412 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsDao.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/data/TransactionsDao.kt
@@ -1,6 +1,5 @@
-package com.example.bondoyap.ui.transactions
+package com.example.bondoyap.ui.transactions.data
 
-import androidx.lifecycle.LiveData
 import androidx.room.Dao
 import androidx.room.Delete
 import androidx.room.Query
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRepository.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/data/TransactionsRepository.kt
similarity index 87%
rename from app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRepository.kt
rename to app/src/main/java/com/example/bondoyap/ui/transactions/data/TransactionsRepository.kt
index e5e402a75ab9fa2205f9f274c465bd7868975925..2a5dcda7972ac83f2c201507de6d43d2fe30c68d 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRepository.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/data/TransactionsRepository.kt
@@ -1,8 +1,7 @@
-package com.example.bondoyap.ui.transactions
+package com.example.bondoyap.ui.transactions.data
 
 import androidx.annotation.WorkerThread
 import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.firstOrNull
 
 class TransactionsRepository(private val transactionsDao: TransactionsDao) {
     val allTransactions: Flow<List<Transactions>> = transactionsDao.getTransactions()
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRoomDatabase.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/data/TransactionsRoomDatabase.kt
similarity index 98%
rename from app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRoomDatabase.kt
rename to app/src/main/java/com/example/bondoyap/ui/transactions/data/TransactionsRoomDatabase.kt
index 6c46f75237fc62f154a52ee7bd29be85deb46e7d..ada79cee07b3f11afee9b2a627791b737ab9c644 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRoomDatabase.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/data/TransactionsRoomDatabase.kt
@@ -1,4 +1,4 @@
-package com.example.bondoyap.ui.transactions
+package com.example.bondoyap.ui.transactions.data
 
 import android.content.Context
 import androidx.room.Database