diff --git a/app/lib/pages/default_page.dart b/app/lib/pages/default_page.dart
index 5d64a50b3ea512da8ee92c336f90dbc3ddd2c382..cc43913ffeca68d27044609b98e196fe6d368149 100644
--- a/app/lib/pages/default_page.dart
+++ b/app/lib/pages/default_page.dart
@@ -7,6 +7,7 @@ import '../consts.dart';
 import 'loading_page.dart';
 import '../widgets/main_layout.dart';
 import '../data_classes.dart';
+import '../utils/custom_search_delegate.dart';
 import '../server_requests/fetch_markers.dart';
 import '../server_requests/fetch_relation.dart';
 
@@ -113,7 +114,7 @@ class _DefaultPageState extends State<DefaultPage> {
               onPressed: () {
                 showSearch(
                   context: context,
-                  delegate: _CustomSearchDelegate((String result) {
+                  delegate: CustomSearchDelegate((String result) {
                     setState(() {
                       selectedLake = result;
                     });
@@ -146,89 +147,4 @@ class _DefaultPageState extends State<DefaultPage> {
       ),
     );
   }
-}
-
-typedef SearchResultCallback = void Function(String result);
-
-class _CustomSearchDelegate extends SearchDelegate {
-  final SearchResultCallback onResultSelected;
-
-  _CustomSearchDelegate(this.onResultSelected);
-
-  List<String> searchItems = [ // NB temp values
-    "Mjøsa",
-    "Bogstadsvannet",
-    "Einavatnet",
-    "Femsjøen",
-    "Femunden",
-    "Fjellsjøen",
-    "Gjende",
-    "Gjersjøen"
-  ];
-
-  @override
-  List<Widget> buildActions(BuildContext context) {
-    return [
-      IconButton( // Clear query
-          icon: const Icon(Icons.clear),
-          onPressed: () {
-            query = '';
-          },
-      )
-    ];
-  }
-
-  @override
-  Widget buildLeading(BuildContext context) {
-    return IconButton( // Close search bar
-        icon: const Icon(Icons.arrow_back),
-        onPressed: () {
-          close(context, null);
-        },
-      );
-  }
-
-  @override
-  Widget buildResults(BuildContext context) {
-    List<String> searchResults = [];
-    final options = FuzzyOptions(threshold: 0.4, findAllMatches: true);
-    final matcher = Fuzzy(searchItems, options: options);
-    final results = matcher.search(query);
-    searchResults = results.map((result) => result.item as String).toList();
-
-    return ListView.builder(
-      itemCount: searchResults.length,
-      itemBuilder: (context, index) {
-        var result = searchResults[index];
-        return GestureDetector(
-          onTap: () {
-            onResultSelected(result);
-            close(context, result);
-          },
-          child: ListTile(
-            title: Text(result),
-          ),
-        );
-      },
-    );
-  }
-
-  @override
-  Widget buildSuggestions(BuildContext context) {
-    List<String> searchResults = [];
-    final options = FuzzyOptions(threshold: 0.4, findAllMatches: true);
-    final matcher = Fuzzy(searchItems, options: options);
-    final results = matcher.search(query);
-    searchResults = results.map((result) => result.item as String).toList();
-
-    return ListView.builder(
-      itemCount: searchResults.length,
-      itemBuilder: (context, index) {
-        var result = searchResults[index];
-        return ListTile(
-          title: Text(result),
-        );
-      },
-    );
-  }
 }
\ No newline at end of file
diff --git a/app/lib/utils/custom_search_delegate.dart b/app/lib/utils/custom_search_delegate.dart
new file mode 100644
index 0000000000000000000000000000000000000000..19366184f55fbb035f932a5758b290654e92925c
--- /dev/null
+++ b/app/lib/utils/custom_search_delegate.dart
@@ -0,0 +1,87 @@
+import 'package:fuzzy/fuzzy.dart';
+import 'package:flutter/material.dart';
+
+typedef SearchResultCallback = void Function(String result);
+
+class CustomSearchDelegate extends SearchDelegate {
+  final SearchResultCallback onResultSelected;
+
+  CustomSearchDelegate(this.onResultSelected);
+
+  List<String> searchItems = [ // NB temp values
+    "Mjøsa",
+    "Bogstadsvannet",
+    "Einavatnet",
+    "Femsjøen",
+    "Femunden",
+    "Fjellsjøen",
+    "Gjende",
+    "Gjersjøen"
+  ];
+
+  @override
+  List<Widget> buildActions(BuildContext context) {
+    return [
+      IconButton( // Clear query
+        icon: const Icon(Icons.clear),
+        onPressed: () {
+          query = '';
+        },
+      )
+    ];
+  }
+
+  @override
+  Widget buildLeading(BuildContext context) {
+    return IconButton( // Close search bar
+      icon: const Icon(Icons.arrow_back),
+      onPressed: () {
+        close(context, null);
+      },
+    );
+  }
+
+  @override
+  Widget buildResults(BuildContext context) {
+    List<String> searchResults = [];
+    final options = FuzzyOptions(threshold: 0.4, findAllMatches: true);
+    final matcher = Fuzzy(searchItems, options: options);
+    final results = matcher.search(query);
+    searchResults = results.map((result) => result.item as String).toList();
+
+    return ListView.builder(
+      itemCount: searchResults.length,
+      itemBuilder: (context, index) {
+        var result = searchResults[index];
+        return GestureDetector(
+          onTap: () {
+            onResultSelected(result);
+            close(context, result);
+          },
+          child: ListTile(
+            title: Text(result),
+          ),
+        );
+      },
+    );
+  }
+
+  @override
+  Widget buildSuggestions(BuildContext context) {
+    List<String> searchResults = [];
+    final options = FuzzyOptions(threshold: 0.4, findAllMatches: true);
+    final matcher = Fuzzy(searchItems, options: options);
+    final results = matcher.search(query);
+    searchResults = results.map((result) => result.item as String).toList();
+
+    return ListView.builder(
+      itemCount: searchResults.length,
+      itemBuilder: (context, index) {
+        var result = searchResults[index];
+        return ListTile(
+          title: Text(result),
+        );
+      },
+    );
+  }
+}
\ No newline at end of file