diff --git a/Session/Meta/AppDelegate.swift b/Session/Meta/AppDelegate.swift
index f677ca9fb..15dac97e8 100644
--- a/Session/Meta/AppDelegate.swift
+++ b/Session/Meta/AppDelegate.swift
@@ -381,16 +381,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
                         // Ensure we haven't timed out yet
                         guard timer.isCancelled == false else { return }
                         
-                        /// Update the app badge in case the unread count changed (but only if the database is valid and
-                        /// not suspended)
+                        /// Update the app badge in case the unread count changed
                         if
-                            dependencies[singleton: .storage].isValid &&
-                            !dependencies[singleton: .storage].isSuspended
+                            let unreadCount: Int = dependencies[singleton: .storage].read({ db in
+                                try Interaction.fetchAppBadgeUnreadCount(db, using: dependencies)
+                            })
                         {
-                            let unreadCount: Int = dependencies[singleton: .storage]
-                                .read { db in try Interaction.fetchAppBadgeUnreadCount(db, using: dependencies) }
-                                .defaulting(to: 0)
-                            
                             DispatchQueue.main.async(using: dependencies) {
                                 UIApplication.shared.applicationIconBadgeNumber = unreadCount
                             }
@@ -792,14 +788,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
             /// number incorrectly)
             DispatchQueue.global(qos: .default).async {
                 guard
-                    dependencies[singleton: .storage].isValid &&
-                    !dependencies[singleton: .storage].isSuspended
+                    let unreadCount: Int = dependencies[singleton: .storage].read({ db in try
+                        Interaction.fetchAppBadgeUnreadCount(db, using: dependencies)
+                    })
                 else { return }
                 
-                let unreadCount: Int = dependencies[singleton: .storage]
-                    .read { db in try Interaction.fetchAppBadgeUnreadCount(db, using: dependencies) }
-                    .defaulting(to: 0)
-                
                 DispatchQueue.main.async(using: dependencies) {
                     UIApplication.shared.applicationIconBadgeNumber = unreadCount
                 }
diff --git a/SessionNotificationServiceExtension/NSENotificationPresenter.swift b/SessionNotificationServiceExtension/NSENotificationPresenter.swift
index cbd389b16..f0741a19c 100644
--- a/SessionNotificationServiceExtension/NSENotificationPresenter.swift
+++ b/SessionNotificationServiceExtension/NSENotificationPresenter.swift
@@ -90,15 +90,9 @@ public class NSENotificationPresenter: NotificationsManagerType {
             .defaulting(to: db[.defaultNotificationSound] ?? Preferences.Sound.defaultNotificationSound)
             .notificationSound(isQuiet: false)
         
-        /// Update the app badge in case the unread count changed (but only if the database is valid and
-        /// not suspended)
-        if
-            dependencies[singleton: .storage].isValid &&
-            !dependencies[singleton: .storage].isSuspended
-        {
-            notificationContent.badge = (try? Interaction.fetchAppBadgeUnreadCount(db, using: dependencies))
-                .map { NSNumber(value: $0) }
-                .defaulting(to: NSNumber(value: 0))
+        /// Update the app badge in case the unread count changed
+        if let unreadCount: Int = try? Interaction.fetchAppBadgeUnreadCount(db, using: dependencies) {
+            notificationContent.badge = NSNumber(value: unreadCount)
         }
         
         // Title & body
@@ -207,15 +201,9 @@ public class NSENotificationPresenter: NotificationsManagerType {
             .defaulting(to: db[.defaultNotificationSound] ?? Preferences.Sound.defaultNotificationSound)
             .notificationSound(isQuiet: false)
         
-        /// Update the app badge in case the unread count changed (but only if the database is valid and
-        /// not suspended)
-        if
-            dependencies[singleton: .storage].isValid &&
-            !dependencies[singleton: .storage].isSuspended
-        {
-            notificationContent.badge = (try? Interaction.fetchAppBadgeUnreadCount(db, using: dependencies))
-                .map { NSNumber(value: $0) }
-                .defaulting(to: NSNumber(value: 0))
+        /// Update the app badge in case the unread count changed
+        if let unreadCount: Int = try? Interaction.fetchAppBadgeUnreadCount(db, using: dependencies) {
+            notificationContent.badge = NSNumber(value: unreadCount)
         }
         
         notificationContent.title = Constants.app_name
diff --git a/SessionNotificationServiceExtension/NotificationServiceExtension.swift b/SessionNotificationServiceExtension/NotificationServiceExtension.swift
index 44575f94e..f15e149d7 100644
--- a/SessionNotificationServiceExtension/NotificationServiceExtension.swift
+++ b/SessionNotificationServiceExtension/NotificationServiceExtension.swift
@@ -478,16 +478,13 @@ public final class NotificationServiceExtension: UNNotificationServiceExtension
         switch resolution {
             case .ignoreDueToMainAppRunning: break
             default:
-                /// Update the app badge in case the unread count changed (but only if the database is valid and
-                /// not suspended)
+                /// Update the app badge in case the unread count changed
                 if
-                    dependencies[singleton: .storage].isValid &&
-                    !dependencies[singleton: .storage].isSuspended
+                    let unreadCount: Int = dependencies[singleton: .storage].read({ [dependencies] db in
+                        try Interaction.fetchAppBadgeUnreadCount(db, using: dependencies)
+                    })
                 {
-                    silentContent.badge = dependencies[singleton: .storage]
-                        .read { [dependencies] db in try Interaction.fetchAppBadgeUnreadCount(db, using: dependencies) }
-                        .map { NSNumber(value: $0) }
-                        .defaulting(to: NSNumber(value: 0))
+                    silentContent.badge = NSNumber(value: unreadCount)
                 }
                 
                 dependencies[singleton: .storage].suspendDatabaseAccess()
@@ -547,15 +544,9 @@ public final class NotificationServiceExtension: UNNotificationServiceExtension
         notificationContent.userInfo = [ NotificationServiceExtension.isFromRemoteKey : true ]
         notificationContent.title = Constants.app_name
         
-        /// Update the app badge in case the unread count changed (but only if the database is valid and
-        /// not suspended)
-        if
-            dependencies[singleton: .storage].isValid &&
-            !dependencies[singleton: .storage].isSuspended
-        {
-            notificationContent.badge = (try? Interaction.fetchAppBadgeUnreadCount(db, using: dependencies))
-                .map { NSNumber(value: $0) }
-                .defaulting(to: NSNumber(value: 0))
+        /// Update the app badge in case the unread count changed
+        if let unreadCount: Int = try? Interaction.fetchAppBadgeUnreadCount(db, using: dependencies) {
+            notificationContent.badge = NSNumber(value: unreadCount)
         }
         
         if let sender: String = callMessage.sender {
diff --git a/SessionSnodeKit/Models/SnodeRecursiveResponse.swift b/SessionSnodeKit/Models/SnodeRecursiveResponse.swift
index fdb729744..91e2d2616 100644
--- a/SessionSnodeKit/Models/SnodeRecursiveResponse.swift
+++ b/SessionSnodeKit/Models/SnodeRecursiveResponse.swift
@@ -7,7 +7,7 @@ public class SnodeRecursiveResponse<T: SnodeSwarmItem>: SnodeResponse {
         case swarm
     }
     
-    public let swarm: [String: T]
+    internal let swarm: [String: T]
     
     // MARK: - Initialization