                 .Replaced,
                 .Loved,
                 .Watching:
-                self.dataSource.modifyItems(post, change: change, collectionView: self.collectionView)
+                sself.dataSource.modifyItems(post, change: change, collectionView: sself.collectionView)
             case .Read: break
             }
-            self.updateNoResultsLabel()
-        }
-
-        loveChangedNotification  = NotificationObserver(notification: LoveChangedNotification) { [unowned self] (love, change) in
-            if !self.initialDataLoaded {
-                return
-            }
-            self.dataSource.modifyItems(love, change: change, collectionView: self.collectionView)
-            self.updateNoResultsLabel()
-        }
-
-        relationshipChangedNotification = NotificationObserver(notification: RelationshipChangedNotification) { [unowned self] user in
-            if !self.initialDataLoaded {
-                return
-            }
-            self.dataSource.modifyUserRelationshipItems(user, collectionView: self.collectionView)
-            self.updateNoResultsLabel()
-        }
-
-        settingChangedNotification = NotificationObserver(notification: SettingChangedNotification) { [unowned self] user in
-            if !self.initialDataLoaded {
-                return
-            }
-            self.dataSource.modifyUserSettingsItems(user, collectionView: self.collectionView)
-            self.updateNoResultsLabel()
-        }
-
-        currentUserChangedNotification = NotificationObserver(notification: CurrentUserChangedNotification) { [unowned self] user in
-            if !self.initialDataLoaded {
-                return
-            }
-            self.dataSource.modifyItems(user, change: .Update, collectionView: self.collectionView)
-            self.updateNoResultsLabel()
+            sself.updateNoResultsLabel()
+        }
+
+        loveChangedNotification  = NotificationObserver(notification: LoveChangedNotification) { [weak self] (love, change) in
+            guard let
+                sself = self
+            where sself.initialDataLoaded && sself.isViewLoaded()
+            else { return }
+
+            sself.dataSource.modifyItems(love, change: change, collectionView: sself.collectionView)
+            sself.updateNoResultsLabel()
+        }
+
+        relationshipChangedNotification = NotificationObserver(notification: RelationshipChangedNotification) { [weak self] user in
+            guard let
+                sself = self
+            where sself.initialDataLoaded && sself.isViewLoaded()
+            else { return }
+
+            sself.dataSource.modifyUserRelationshipItems(user, collectionView: sself.collectionView)
+            sself.updateNoResultsLabel()
+        }
+
+        settingChangedNotification = NotificationObserver(notification: SettingChangedNotification) { [weak self] user in
+            guard let
+                sself = self
+            where sself.initialDataLoaded && sself.isViewLoaded()
+            else { return }
+
+            sself.dataSource.modifyUserSettingsItems(user, collectionView: sself.collectionView)
+            sself.updateNoResultsLabel()
+        }
+
+        currentUserChangedNotification = NotificationObserver(notification: CurrentUserChangedNotification) { [weak self] user in
+            guard let
+                sself = self
+            where sself.initialDataLoaded && sself.isViewLoaded()
+            else { return }
+
+            sself.dataSource.modifyItems(user, change: .Update, collectionView: sself.collectionView)
+            sself.updateNoResultsLabel()
         }
     }
 

            sself.updateNoResultsLabel()
        }

        postChangedNotification = NotificationObserver(notification: PostChangedNotification) { [unowned self] (post, change) in
            if !self.initialDataLoaded {
                return
            }
            switch change {
            case .Delete:
                switch self.streamKind {
                case .PostDetail: break
                default:
                    self.dataSource.modifyItems(post, change: change, collectionView: self.collectionView)
                }
                // reload page
            case .Create,

    }

    private func addNotificationObservers() {
        updatedStreamImageCellHeightNotification = NotificationObserver(notification: StreamNotification.AnimateCellHeightNotification) { [weak self] streamImageCell in
            guard let sself = self else { return }
            sself.imageCellHeightUpdated(streamImageCell)
        }
        updateCellHeightNotification = NotificationObserver(notification: StreamNotification.UpdateCellHeightNotification) { [weak self] streamTextCell in
            guard let sself = self else { return }
            sself.collectionView.collectionViewLayout.invalidateLayout()
        }
        rotationNotification = NotificationObserver(notification: Application.Notifications.DidChangeStatusBarOrientation) { [weak self] _ in
            guard let sself = self else { return }
            sself.reloadCells()
        }
        sizeChangedNotification = NotificationObserver(notification: Application.Notifications.ViewSizeWillChange) { [weak self] size in
            guard let sself = self else { return }

            if let layout = sself.collectionView.collectionViewLayout as? StreamCollectionViewLayout {
                layout.columnCount = sself.streamKind.columnCountFor(width: size.width)
                layout.invalidateLayout()
            }
            sself.reloadCells()
        }

        commentChangedNotification = NotificationObserver(notification: CommentChangedNotification) { [weak self] (comment, change) in
