diff --git a/app/src/main/java/com/example/bondoman/activities/MainActivity.kt b/app/src/main/java/com/example/bondoman/activities/MainActivity.kt
index b432cc44dd68e7dbbb2c01f14f00e5f2d6728973..097d17ac536af5d6bdc0b20e9c44654b6729d4eb 100644
--- a/app/src/main/java/com/example/bondoman/activities/MainActivity.kt
+++ b/app/src/main/java/com/example/bondoman/activities/MainActivity.kt
@@ -1,6 +1,7 @@
 package com.example.bondoman.activities
 
 import android.os.Bundle
+import android.util.Log
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ImageButton
@@ -16,11 +17,13 @@ import com.example.bondoman.fragments.SettingsFragment
 import com.example.bondoman.fragments.TransactionListFragment
 import com.example.bondoman.fragments.TransactionUpdateFragment
 import com.example.bondoman.fragments.TwibbonFragment
-import com.example.bondoman.utils.interfaces.LayoutAppender
+import com.example.bondoman.utils.interfaces.ParentActivityService
 import com.google.android.material.bottomnavigation.BottomNavigationView
 
-class MainActivity : AppCompatActivity(), LayoutAppender {
+class MainActivity : AppCompatActivity(), ParentActivityService {
 	private lateinit var mainLayout: ConstraintLayout
+	private lateinit var backButton: ImageButton
+	private lateinit var headerText: TextView
 
 	private fun setCurrentFragment(fragment: Fragment) {
 		supportFragmentManager.beginTransaction().apply {
@@ -44,15 +47,32 @@ class MainActivity : AppCompatActivity(), LayoutAppender {
 		mainLayout.removeView(layout)
 	}
 
-	override fun getParentId(): Int {
+	override fun getParentLayoutId(): Int {
 		return R.id.main
 	}
 
+	override fun showBackButton(onClick: () -> Unit) {
+		backButton.visibility = View.VISIBLE
+		backButton.setOnClickListener { onClick() }
+	}
+
+	override fun hideBackButton() {
+		backButton.visibility = View.GONE
+		backButton.setOnClickListener {}
+	}
+
+	override fun setHeaderText(text: String) {
+		Log.d("SET HEADER TO", text)
+		headerText.text = text
+	}
+
 	override fun onCreate(savedInstanceState: Bundle?) {
 		super.onCreate(savedInstanceState)
 		setContentView(R.layout.activity_main)
 
 		mainLayout = findViewById(R.id.main)
+		backButton = mainLayout.findViewById(R.id.back_button)
+		headerText = mainLayout.findViewById(R.id.header_text)
 
 		// back button icon orientation
 		val backButton = findViewById<ImageButton>(R.id.back_button)
diff --git a/app/src/main/java/com/example/bondoman/fragments/ScanReceiptFragment.kt b/app/src/main/java/com/example/bondoman/fragments/ScanReceiptFragment.kt
index 1ae5e124be122e2b21b652dc76f6ea078bbbdbb4..263cf83623c8961bd6b35168141643b7c9bc225a 100644
--- a/app/src/main/java/com/example/bondoman/fragments/ScanReceiptFragment.kt
+++ b/app/src/main/java/com/example/bondoman/fragments/ScanReceiptFragment.kt
@@ -16,7 +16,6 @@ import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
 import com.example.bondoman.databinding.FragmentScanReceiptBinding
 import java.util.concurrent.ExecutorService
-import java.util.concurrent.Executors
 
 class ScanReceiptFragment : Fragment() {
 	private lateinit var viewBinding: FragmentScanReceiptBinding
@@ -65,9 +64,6 @@ class ScanReceiptFragment : Fragment() {
 			requestPermissions()
 		}
 
-		// Set up the listeners for take photo and video capture button
-		viewBinding.imageCaptureButton.setOnClickListener { takePhoto() }
-
 		// Set up the listeners for take photo and video capture button
 		viewBinding.receiptCaptureButton.setOnClickListener { takePhoto() }
 	}
diff --git a/app/src/main/java/com/example/bondoman/fragments/TransactionAddFragment.kt b/app/src/main/java/com/example/bondoman/fragments/TransactionAddFragment.kt
index c2038d10592c303b76fdf82332eddd3a77a0f332..0bd02d2401846bf14281eb4a4539fc92e90d1ec2 100644
--- a/app/src/main/java/com/example/bondoman/fragments/TransactionAddFragment.kt
+++ b/app/src/main/java/com/example/bondoman/fragments/TransactionAddFragment.kt
@@ -8,10 +8,19 @@ import com.example.bondoman.R
 import com.example.bondoman.components.TextInputComponent
 
 class TransactionAddFragment : TransactionFormFragment() {
+	companion object {
+		val headerText: String = "New Transaction"
+		@JvmStatic
+		fun newInstance() =
+			TransactionUpdateFragment().apply {
+			}
+	}
+	override fun getHeaderText(): String {
+		return headerText
+	}
 	override fun onCreate(savedInstanceState: Bundle?) {
 		super.onCreate(savedInstanceState)
 	}
-
 	override fun onCreateView(
 		inflater: LayoutInflater,
 		container: ViewGroup?,
@@ -26,11 +35,4 @@ class TransactionAddFragment : TransactionFormFragment() {
 
 		return view
 	}
-
-	companion object {
-		@JvmStatic
-		fun newInstance() =
-			TransactionUpdateFragment().apply {
-			}
-	}
 }
diff --git a/app/src/main/java/com/example/bondoman/fragments/TransactionFormFragment.kt b/app/src/main/java/com/example/bondoman/fragments/TransactionFormFragment.kt
index 8811058bf3d5672d6219b03dcf69a714656a063a..4937ec7e843fe08a89a97d3870663cf15df5c9d3 100644
--- a/app/src/main/java/com/example/bondoman/fragments/TransactionFormFragment.kt
+++ b/app/src/main/java/com/example/bondoman/fragments/TransactionFormFragment.kt
@@ -8,10 +8,15 @@ import android.widget.ArrayAdapter
 import android.widget.AutoCompleteTextView
 import androidx.fragment.app.Fragment
 import com.example.bondoman.R
+import com.example.bondoman.utils.interfaces.ParentActivityService
+import com.example.bondoman.utils.interfaces.SecondaryFragment
 
-open class TransactionFormFragment : Fragment() {
+abstract class TransactionFormFragment : Fragment(), SecondaryFragment {
+	private lateinit var parentActivityService: ParentActivityService
 	override fun onCreate(savedInstanceState: Bundle?) {
 		super.onCreate(savedInstanceState)
+
+		parentActivityService = requireActivity() as ParentActivityService
 	}
 
 	override fun onCreateView(
@@ -21,8 +26,9 @@ open class TransactionFormFragment : Fragment() {
 	): View? {
 		// Inflate the layout for this fragment
 		val view = inflater.inflate(R.layout.fragment_transaction_form, container, false)
-		val autoCompleteTextView = view.findViewById<AutoCompleteTextView>(R.id.transaction_form_auto_complete)
 
+		// set category dropdown adapter
+		val autoCompleteTextView = view.findViewById<AutoCompleteTextView>(R.id.transaction_form_auto_complete)
 		val categories = listOf("satu", "dua", "tiga")
 		val dropdownAdapter = ArrayAdapter(requireContext(), R.layout.component_dropdown_item, categories)
 		autoCompleteTextView.setAdapter(dropdownAdapter)
@@ -39,13 +45,12 @@ open class TransactionFormFragment : Fragment() {
 				}
 			}
 
-		return view
-	}
+		// set header text
+		parentActivityService.setHeaderText(getHeaderText())
 
-	companion object {
-		@JvmStatic
-		fun newInstance() =
-			TransactionUpdateFragment().apply {
-			}
+		// set back button callback
+		parentActivityService.showBackButton {  }
+		
+		return view
 	}
 }
diff --git a/app/src/main/java/com/example/bondoman/fragments/TransactionListFragment.kt b/app/src/main/java/com/example/bondoman/fragments/TransactionListFragment.kt
index ee8f611bcbc67c7368de9a8918d5b8da754d6b63..db831af7f0ebf40db3494c08fd625ae79a1fcce0 100644
--- a/app/src/main/java/com/example/bondoman/fragments/TransactionListFragment.kt
+++ b/app/src/main/java/com/example/bondoman/fragments/TransactionListFragment.kt
@@ -14,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView.ItemDecoration
 import com.example.bondoman.R
 import com.example.bondoman.adapters.TransactionListAdapter
 import com.example.bondoman.decorators.DividerItemDecorator
-import com.example.bondoman.utils.interfaces.LayoutAppender
+import com.example.bondoman.utils.interfaces.ParentActivityService
 import com.example.bondoman.utils.interfaces.TransactionClickListener
 import com.google.android.material.bottomsheet.BottomSheetBehavior
 import com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
@@ -26,6 +26,7 @@ class TransactionListFragment : Fragment(), TransactionClickListener {
 	private lateinit var detailLayout: BlurView
 	private lateinit var bottomSheetBehavior: BottomSheetBehavior<out View>
 	private val blurRadius: Float = 1f
+	private lateinit var parentActivityService: ParentActivityService
 
 	override fun onItemClick(item: Int) {
 		bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
@@ -33,6 +34,8 @@ class TransactionListFragment : Fragment(), TransactionClickListener {
 
 	override fun onCreate(savedInstanceState: Bundle?) {
 		super.onCreate(savedInstanceState)
+
+		parentActivityService = requireActivity() as ParentActivityService
 	}
 
 	override fun onCreateView(
@@ -46,9 +49,7 @@ class TransactionListFragment : Fragment(), TransactionClickListener {
 		// add detail layout to parent activity
 		detailLayout = inflater.inflate(R.layout.component_transaction_detail, container, false) as BlurView
 
-		if (activity is LayoutAppender) {
-			activity.appendLayout(detailLayout)
-		}
+		parentActivityService.appendLayout(detailLayout)
 
 		// configure blur effect
 		val decorView = activity.window.decorView as ViewGroup
@@ -137,9 +138,7 @@ class TransactionListFragment : Fragment(), TransactionClickListener {
 		super.onDestroyView()
 		val activity = requireActivity()
 
-		if (activity is LayoutAppender) {
-			activity.removeLayout(detailLayout)
-		}
+		parentActivityService.removeLayout(detailLayout)
 	}
 
 	companion object {
diff --git a/app/src/main/java/com/example/bondoman/fragments/TransactionUpdateFragment.kt b/app/src/main/java/com/example/bondoman/fragments/TransactionUpdateFragment.kt
index 18769bf75ea9e6d630c9f14f23efaf12235fb89f..4f375e329e6a60277c6086d9ddfe5c198053fac6 100644
--- a/app/src/main/java/com/example/bondoman/fragments/TransactionUpdateFragment.kt
+++ b/app/src/main/java/com/example/bondoman/fragments/TransactionUpdateFragment.kt
@@ -4,10 +4,27 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import com.example.bondoman.utils.interfaces.ParentActivityService
 
 class TransactionUpdateFragment : TransactionFormFragment() {
+
+	companion object {
+		val headerText: String = "Update Transaction"
+		@JvmStatic
+		fun newInstance() =
+			TransactionUpdateFragment().apply {
+			}
+	}
+
+	private lateinit var parentActivityService: ParentActivityService
+
+	override fun getHeaderText(): String {
+		return headerText
+	}
 	override fun onCreate(savedInstanceState: Bundle?) {
 		super.onCreate(savedInstanceState)
+
+		parentActivityService = requireActivity() as ParentActivityService
 	}
 
 	override fun onCreateView(
@@ -19,11 +36,4 @@ class TransactionUpdateFragment : TransactionFormFragment() {
 		val view = super.onCreateView(inflater, container, savedInstanceState)
 		return view
 	}
-
-	companion object {
-		@JvmStatic
-		fun newInstance() =
-			TransactionUpdateFragment().apply {
-			}
-	}
 }
diff --git a/app/src/main/java/com/example/bondoman/utils/interfaces/LayoutAppender.kt b/app/src/main/java/com/example/bondoman/utils/interfaces/ParentActivityService.kt
similarity index 60%
rename from app/src/main/java/com/example/bondoman/utils/interfaces/LayoutAppender.kt
rename to app/src/main/java/com/example/bondoman/utils/interfaces/ParentActivityService.kt
index 7107ee86a2cc0dc1a8738b83cfb9f7c882d6882d..bdccfdc3d8f5d5ded3001c111347023e96dadadf 100644
--- a/app/src/main/java/com/example/bondoman/utils/interfaces/LayoutAppender.kt
+++ b/app/src/main/java/com/example/bondoman/utils/interfaces/ParentActivityService.kt
@@ -3,7 +3,7 @@ package com.example.bondoman.utils.interfaces
 import android.view.View
 import android.view.ViewGroup.LayoutParams
 
-interface LayoutAppender {
+interface ParentActivityService {
 	fun appendLayout(layout: View)
 
 	fun appendLayout(
@@ -13,5 +13,11 @@ interface LayoutAppender {
 
 	fun removeLayout(layout: View)
 
-	fun getParentId(): Int
+	fun getParentLayoutId(): Int
+
+	fun showBackButton(onClick: () -> Unit)
+
+	fun hideBackButton()
+
+	fun setHeaderText(text: String)
 }
diff --git a/app/src/main/java/com/example/bondoman/utils/interfaces/SecondaryFragment.kt b/app/src/main/java/com/example/bondoman/utils/interfaces/SecondaryFragment.kt
new file mode 100644
index 0000000000000000000000000000000000000000..404103727d5569aafd8989a18ce5664ff2922e3c
--- /dev/null
+++ b/app/src/main/java/com/example/bondoman/utils/interfaces/SecondaryFragment.kt
@@ -0,0 +1,5 @@
+package com.example.bondoman.utils.interfaces
+
+interface SecondaryFragment {
+	fun getHeaderText(): String
+}