diff --git a/trackeroo/lib/app_scaffold.dart b/trackeroo/lib/app_scaffold.dart
index 455d9f0fafe101b30e0cb9c9b2d933dd4b394e54..c5f3f88965b81ac5705f58483f7174754094ce8e 100644
--- a/trackeroo/lib/app_scaffold.dart
+++ b/trackeroo/lib/app_scaffold.dart
@@ -1,4 +1,5 @@
 import 'package:flutter/material.dart';
+import 'package:trackeroo/frontend/views/edit_transaction_view.dart';
 import 'package:trackeroo/frontend/views/home_view.dart';
 import 'package:trackeroo/frontend/views/details_view.dart';
 import 'package:trackeroo/frontend/views/category_view.dart';
@@ -78,7 +79,10 @@ class _AppScaffoldState extends State<AppScaffold> {
       floatingActionButton: FloatingActionButton(
         onPressed: () {
           if(index == 0 || index == 1) {
-            // add tranaction
+            Navigator.push(
+              context,
+              MaterialPageRoute(builder: (context) => const EditTransactionView())
+            );
           }
           if(index == 2) {
             // add category
diff --git a/trackeroo/lib/frontend/views/home_view.dart b/trackeroo/lib/frontend/views/home_view.dart
index 9b1b7028077ea37a90e28280dcb3c2aaa730cca4..9b9ccb417fd5695211927d19b53a89c3e50a7484 100644
--- a/trackeroo/lib/frontend/views/home_view.dart
+++ b/trackeroo/lib/frontend/views/home_view.dart
@@ -1,8 +1,11 @@
 import 'package:flutter/material.dart';
 import 'package:fl_chart/fl_chart.dart';
+import 'package:hive_flutter/hive_flutter.dart';
 import 'package:trackeroo/frontend/utils/transaction_listtile.dart';
 import 'package:trackeroo/frontend/views/onboarding_view.dart';
 import 'package:trackeroo/logic/models/transaction.dart';
+import 'package:trackeroo/logic/services/locator.dart';
+import 'package:trackeroo/logic/services/transactions_controller.dart';
 
 enum Timespan { daily, weekly, monthly, yearly, all }
 
@@ -18,6 +21,7 @@ class _HomeViewState extends State<HomeView> {
   Transaction trp = Transaction(title: "Gehalt", amount: 1300, categoryId: 'leisure_and_entertainment', dueDate: DateTime.now());
 
   Timespan timespanView = Timespan.monthly;
+  TransactionsController transContr = locator.get<TransactionsController>();
 
   @override
   Widget build(BuildContext context) {
@@ -154,11 +158,29 @@ class _HomeViewState extends State<HomeView> {
               ),
             ),
             const SizedBox(height: 5.0),
-            TransactionListtile(transaction: trn),
-            TransactionListtile(transaction: trn),
-            TransactionListtile(transaction: trn),
-            TransactionListtile(transaction: trp),
-            TransactionListtile(transaction: trn),
+            ValueListenableBuilder(
+              valueListenable: transContr.transactionsBox.listenable(),
+              builder: (context, Box<Transaction> box, widget) {
+                transContr.transactionsList = box.values.toList();
+                transContr.transactionsList.sort((b, a) => a.createdAt.compareTo(b.createdAt));
+                if(box.isEmpty) {
+                  return const SizedBox(
+                    height: 200.0,
+                    child: Center(
+                      child: Text('no existing transactions yet'),
+                    ),
+                  );
+                }
+                return ListView.builder(
+                  physics: const NeverScrollableScrollPhysics(),
+                  shrinkWrap: true,
+                  itemCount: transContr.transactionsList.length <= 25 ? transContr.transactionsList.length : 25,
+                  itemBuilder: (context, index) {
+                    return TransactionListtile(transaction: transContr.transactionsList[index]);
+                  },
+                );
+              },
+            ),
             FilledButton(
               onPressed: () {
                 Navigator.push(
diff --git a/trackeroo/lib/logic/services/locator.dart b/trackeroo/lib/logic/services/locator.dart
index 70b733cce7e59a8352dc85f986a33cd21634be7d..5936372cf217405c94d6833e52af363a116290a9 100644
--- a/trackeroo/lib/logic/services/locator.dart
+++ b/trackeroo/lib/logic/services/locator.dart
@@ -49,10 +49,9 @@ Future<void> setupLocatorService() async {
   locator.registerLazySingleton<CategoriesController>(() => categoriesController);
 
   Box<Transaction> transactionsBox = await Hive.openBox<Transaction>('transactions_box');
-  List<Transaction> transactionsList = HiveList(transactionsBox);
   TransactionsController transactionsController = TransactionsController(
     transactionsBox: transactionsBox,
-    transactions: transactionsList
+    transactionsList: transactionsBox.values.toList()
   );
   locator.registerLazySingleton<TransactionsController>(() => transactionsController);
 }
diff --git a/trackeroo/lib/logic/services/transactions_controller.dart b/trackeroo/lib/logic/services/transactions_controller.dart
index 934fbba73cc9f631fc06268b35ec3563e79b1297..88a7cfcc4546ef8a793e2b1f202f0fafdc133cb6 100644
--- a/trackeroo/lib/logic/services/transactions_controller.dart
+++ b/trackeroo/lib/logic/services/transactions_controller.dart
@@ -5,25 +5,53 @@ import 'package:trackeroo/logic/services/categories_controller.dart';
 import 'package:trackeroo/logic/services/locator.dart';
 
 class TransactionsController {
-  TransactionsController({required this.transactionsBox, required this.transactions});
+  TransactionsController({required this.transactionsBox, required this.transactionsList});
 
   Box<Transaction> transactionsBox;
-  List<Transaction> transactions;
+  List<Transaction> transactionsList;
+  late Transaction lastDeletedTransaction;
 
-  void saveTransaction(Transaction transaction) {
-    locator.get<CategoriesController>().categories[transaction.categoryId]?.spendings += transaction.amount;
-    int id = UniqueKey().hashCode;
-    transaction.id = id;
-    transactionsBox.put(transaction.id, transaction);
-    transactions.add(transaction);
+  Future<bool> saveTransaction(Transaction transaction) async {
+    try {
+      locator.get<CategoriesController>().categories[transaction.categoryId]?.spendings += transaction.amount;
+      int id = UniqueKey().hashCode;
+      transaction.id = id;
+      await transactionsBox.put(transaction.id, transaction);
+      transactionsList = transactionsBox.values.toList();
+    } catch (e) {
+      return false;
+    }
+    return true;
   }
 
-  void updateTransaction() {
-    // TODO: implement update transaction
+  Future<bool> updateTransaction(Transaction transaction) async {
+    try {
+      await transactionsBox.put(transaction.id, transaction);
+      transactionsList = transactionsBox.values.toList();
+    } catch (e) {
+      return false;
+    }
+    return true;
   }
 
-  void deleteTransaction(Transaction transaction) {
-    transactionsBox.delete(transaction.id);
-    transactions.remove(transaction);
+  Future<bool> deleteTransaction(Transaction transaction) async {
+    try {
+      lastDeletedTransaction = transaction;
+      await transactionsBox.delete(transaction.id);
+      transactionsList = transactionsBox.values.toList();
+    } catch (e) {
+      return false;
+    }
+    return true;
+  }
+
+  Future<bool> undoLastDeletion() async {
+    try {
+      await transactionsBox.put(lastDeletedTransaction.id, lastDeletedTransaction);
+      transactionsList = transactionsBox.values.toList();
+    } catch (e) {
+      return false;
+    }
+    return true;
   }
 }