      (defn plimit [proj limit]
        (reify IProjection
          (-project [this target enqueue-fn]
-           (project proj (LimitProjection. limit proj target) enqueue-fn))))
+           (let [pproj (LimitProjection. limit proj target)]
+             (set! (.-source pproj) (project proj pproj enqueue-fn))
+             pproj))))
+     
 
      (defn- cmap2* [f keyset-cursor
                     {:keys [filter sort offset limit placeholder-idx placeholder] :as opts}]

       (reify IProjection
         (-project [this target enqueue]
           (let [source (SeqProjectionSource. elements target enqueue)]
             (target-init target source)
             (enqueue (fn [] (.refresh source)))))))

     (defprotocol IAsVirtualElement
       (-as-velem [this as-velem-fn]))

       (reify IProjection
         (-project [this target enqueue-fn]
           (let [pproj (OffsetProjection. offset target nil)]
             (set! (.-source pproj) (project proj pproj enqueue-fn))
             pproj))))

     (deftype LimitProjection [offset source target]
       Object
