                      previousPageToken: page.previousPageToken)
                }
                .promoteErrors(NSError.self)
-      }
+         }
+         .retainWhileWorking(self.manager)
    }
 
    private func loadParts<T: protocol<JSONRepresentable,

   }

   public func videos(request: Videos) -> SignalProducer<Page<Video>, NSError> {
      return self.page(request)
   }

   public func channels(request: Channels) -> SignalProducer<Page<Channel>, NSError> {
      return self.page(request)
   }

   public func search(request: Search) -> SignalProducer<Page<SearchItem>, NSError> {


            let videosParts =
               self.loadParts(request.videoParts.filter { $0 != request.part },
                  items: page.items,
                  type: Video.self)

            let channelParts =
               self.loadParts(request.channelParts.filter { $0 != request.part },
                  items: page.items,
                  type: Channel.self)

            return combineLatest(videosParts, channelParts)
               .map { videosById, channelsById -> Page<SearchItem> in
