diff --git a/dm/interfaces.go b/dm/interfaces.go
index 1c666b118a386a685ce4f323aac911502f0277e2..89a75f22531a4d0fd6b1fffd99f8360fc36bd82b 100644
--- a/dm/interfaces.go
+++ b/dm/interfaces.go
@@ -284,10 +284,6 @@ type cMixClient interface {
 type NotificationsManager interface {
 	Set(toBeNotifiedOn *id.ID, group string, metadata []byte,
 		status clientNotif.NotificationState) error
-	Get(toBeNotifiedOn *id.ID) (status clientNotif.NotificationState,
-		metadata []byte, group string, exists bool)
-	Delete(toBeNotifiedOn *id.ID) error
-	RegisterUpdateCallback(group string, nu clientNotif.Update)
 }
 
 // NickNameManager interface is an object that handles the mapping of nicknames
diff --git a/dm/notifications_test.go b/dm/notifications_test.go
index 449f1a6365cfed1cf4d978f6ab7a05aba7302b05..43c88a191c4b98796feb529f0f20637416894f05 100644
--- a/dm/notifications_test.go
+++ b/dm/notifications_test.go
@@ -460,32 +460,3 @@ func (m *mockNM) Set(
 	}
 	return nil
 }
-
-func (m *mockNM) Get(toBeNotifiedOn *id.ID) (clientNotif.NotificationState, []byte, string, bool) {
-	for group, ids := range m.channels {
-		for chanID, ni := range ids {
-			if chanID.Cmp(toBeNotifiedOn) {
-				return ni.Status, ni.Metadata, group, true
-			}
-		}
-	}
-
-	return clientNotif.Mute, nil, "", false
-}
-
-func (m *mockNM) Delete(toBeNotifiedOn *id.ID) error {
-	for group, ids := range m.channels {
-		if _, exists := ids[*toBeNotifiedOn]; exists {
-			delete(m.channels[group], *toBeNotifiedOn)
-			if _, exists = m.cbs[group]; exists {
-				go m.cbs[group](m.channels[group], nil, nil, nil, clientNotif.Push)
-			}
-			return nil
-		}
-	}
-	return nil
-}
-
-func (m *mockNM) RegisterUpdateCallback(group string, nu clientNotif.Update) {
-	m.cbs[group] = nu
-}
diff --git a/notifications/interface.go b/notifications/interface.go
index 9ce901a3d5edbf80d53637176b5fbd664b88f222..4c96fc6ae085acc4a9fafcf82cfa5e3fdb2b0ab6 100644
--- a/notifications/interface.go
+++ b/notifications/interface.go
@@ -104,7 +104,8 @@ type Manager interface {
 	// to changes in notifications. Because this is being called after
 	// initialization, a poll of state via the get function will be necessary
 	// because notifications can be missed. You must rely on the data in the
-	// callback for the update and not poll the interface.
+	// callback for the update and not poll the interface. On registration, the
+	// callback will be called immediately with all saved IDs as created.
 	RegisterUpdateCallback(group string, nu Update)
 }
 
diff --git a/notifications/manager.go b/notifications/manager.go
index df22f02029b5c4b8444dfeb1bfc59966560ddac6..fd20594033fc0729f96ee31a25f0fe862bbceb59 100644
--- a/notifications/manager.go
+++ b/notifications/manager.go
@@ -138,10 +138,14 @@ func NewOrLoadManager(identity xxdk.TransmissionIdentity, regSig []byte,
 func (m *manager) RegisterUpdateCallback(group string, nu Update) {
 	m.mux.Lock()
 	defer m.mux.Unlock()
-	m.callbacks[group] = nu
 	if g, ok := m.group[group]; ok {
-		nu(g, nil, nil, nil, m.maxState)
+		created := make([]*id.ID, 0, len(g))
+		for gid := range g {
+			created = append(created, &gid)
+		}
+		nu(g.DeepCopy(), created, nil, nil, m.maxState)
 	}
+	m.callbacks[group] = nu
 }
 
 // mapUpdate is the listener function which is called whenever the notifications