diff --git a/lib/core/md_yaml_doc_loader.dart b/lib/core/md_yaml_doc_loader.dart
index 0e20d60b..184bcab1 100644
--- a/lib/core/md_yaml_doc_loader.dart
+++ b/lib/core/md_yaml_doc_loader.dart
@@ -1,6 +1,7 @@
 import 'dart:io';
 import 'dart:isolate';
 
+import 'package:dart_git/utils/result.dart';
 import 'package:synchronized/synchronized.dart';
 
 import 'package:gitjournal/core/md_yaml_doc.dart';
@@ -34,13 +35,13 @@ class MdYamlDocLoader {
     });
   }
 
-  // FIXME: Don't throw exceptions!
-  Future<MdYamlDoc?> loadDoc(String filePath) async {
+  Future<Result<MdYamlDoc>> loadDoc(String filePath) async {
     await _initIsolate();
 
     final file = File(filePath);
     if (!file.existsSync()) {
-      throw MdYamlDocNotFoundException(filePath);
+      var ex = MdYamlDocNotFoundException(filePath);
+      return Result.fail(ex);
     }
 
     var rec = ReceivePort();
@@ -52,10 +53,11 @@ class MdYamlDocLoader {
     assert(resp.filePath == filePath);
 
     if (resp.doc != null) {
-      return resp.doc;
+      return Result(resp.doc!);
     }
 
-    throw MdYamlParsingException(filePath, resp.err.toString());
+    var ex = MdYamlParsingException(filePath, resp.err.toString());
+    return Result.fail(ex);
   }
 }
 
diff --git a/lib/core/note.dart b/lib/core/note.dart
index d8ce16a3..4bc9786b 100644
--- a/lib/core/note.dart
+++ b/lib/core/note.dart
@@ -366,20 +366,21 @@ class Note with NotesNotifier {
     var isOrg = fpLowerCase.endsWith('.org');
 
     if (isMarkdown) {
-      try {
-        var dataMaybe = await _mdYamlDocLoader.loadDoc(_filePath!);
-        data = dataMaybe!;
+      var dataResult = await _mdYamlDocLoader.loadDoc(_filePath!);
+      if (dataResult.isSuccess) {
+        data = dataResult.getOrThrow();
         _fileFormat = NoteFileFormat.Markdown;
-      } on MdYamlDocNotFoundException catch (_) {
-        _loadState = NoteLoadState.NotExists;
-        _notifyModified();
-        return _loadState;
-      } on MdYamlParsingException catch (err, stackTrace) {
-        logException(err, stackTrace);
-
-        _loadState = NoteLoadState.Error;
-        _notifyModified();
-        return _loadState;
+      } else {
+        if (dataResult.error is MdYamlDocNotFoundException) {
+          _loadState = NoteLoadState.NotExists;
+          _notifyModified();
+          return _loadState;
+        }
+        if (dataResult.error is MdYamlParsingException) {
+          _loadState = NoteLoadState.Error;
+          _notifyModified();
+          return _loadState;
+        }
       }
     } else if (isTxt) {
       try {
diff --git a/lib/setup/repo_selector.dart b/lib/setup/repo_selector.dart
index 8c59ac93..6a0ab292 100644
--- a/lib/setup/repo_selector.dart
+++ b/lib/setup/repo_selector.dart
@@ -1,6 +1,5 @@
 import 'package:flutter/material.dart';
 
-import 'package:collection/collection.dart';
 import 'package:easy_localization/easy_localization.dart';
 import 'package:function_types/function_types.dart';
 import 'package:intl/intl.dart';
diff --git a/test/md_yaml_doc_loader_test.dart b/test/md_yaml_doc_loader_test.dart
index 844405bc..3a81f589 100644
--- a/test/md_yaml_doc_loader_test.dart
+++ b/test/md_yaml_doc_loader_test.dart
@@ -1,9 +1,9 @@
 import 'dart:io';
 
+import 'package:dart_git/utils/result.dart';
 import 'package:path/path.dart' as p;
 import 'package:test/test.dart';
 
-import 'package:gitjournal/core/md_yaml_doc.dart';
 import 'package:gitjournal/core/md_yaml_doc_loader.dart';
 
 void main() {
@@ -29,7 +29,7 @@ Alright.""";
 
     test('Should load one doc', () async {
       var loader = MdYamlDocLoader();
-      var doc = (await loader.loadDoc(filePath)) as MdYamlDoc;
+      var doc = await loader.loadDoc(filePath).getOrThrow();
 
       expect(doc.body, "Alright.");
       expect(doc.props["type"], "Journal");