   }
 
   func requestLinks() {
-    Observable.combineLatest(request, userObservable, accessTokenObservable) {
-      ($0, $1, $2)
-      }.take(1)
-      .bindNext { [weak self] (linkListing, user, accessToken) in
-        self?.linkListings.value.append(linkListing)
-        let viewModels = LinkListViewModel.viewModelsFromLinkListing(linkListing,
-          user: user, accessToken: accessToken)
-        viewModels.forEach { $0.preloadData() }
-        self?._viewModels.value += viewModels
+    guard _loadingState.value != .Loading else { return }
+
+    Observable.combineLatest(request, userObservable, accessTokenObservable) { ($0, $1, $2) }
+      .take(1)
+      .subscribe { [weak self] event in
+        guard let `self` = self else { return }
+
+        switch event {
+        case let .Next(linkListing, user, accessToken):
+          self.linkListings.value.append(linkListing)
+          let viewModels = LinkListViewModel.viewModelsFromLinkListing(linkListing,
+            user: user, accessToken: accessToken)
+          viewModels.forEach { $0.preloadData() }
+          self._viewModels.value += viewModels
+          self._loadingState.value = self._viewModels.value.count > 0 ? .Normal : .Empty
+        case .Error:
+          self._loadingState.value = .Error
+        default: break
+        }
+
       }.addDisposableTo(disposeBag)
   }
 }

      .combineLatest(listingType, afterObservable, accessTokenObservable, pathObservable) {
      ($0, $1, $2, $3)
      }.take(1)
      .flatMap {
        (listingType: ListingType, after: String?, accessToken: AccessToken?, path: String) in
        Network.request(RedditAPI.LinkListing(token: accessToken?.token,
          path: path, listingPath: listingType.path, after: after))
      }.mapObject(LinkListing)
  }
}


  private let _viewModels: Variable<[LinkListItemViewModel]> = Variable([])
  private let _listingType: Variable<ListingType> = Variable(.Hot)
  private let disposeBag = DisposeBag()
  private let _loadingState = Variable<LoadingState>(.Normal)

  // MARK: Initializer
  init(user: User?, accessToken: AccessToken?, title: String, path: String) {
