                   IStream
                   (subscribe [this identifier target]
                     (-> service
-                        (assoc :cached-service this)
+                        (caching this)
                         (subscribe identifier target)))
                   (cancel [this target]
                     (cancel service target)))

  (doto (chan)
    (on-close-pipe target on-close)))

(defrecord CompscribeService [cached-service source-service subscriptions]
  IStream
  (subscribe [this identifier target]
    (let [[spec id] identifier

          (swap! subscriptions assoc target
                 (vary-meta (compscribe* subs-target
                                         source-service
                                         (this-cached this)
                                         spec
                                         id)
                            assoc ::identifier identifier))))))
