            (target-take target j)))
        (-target-count [this]
          (target-count target))
-       (-target-move [this elem-idx before-idx])
-       (-target-remove [this elem-idx])
-       (-target-clear [this]))
+       (-target-move [this elem-idx before-idx]))
 
      (defn plimit [proj limit]
        (reify IProjection

       (-target-count [this]
         (target-count target))
       (-target-move [this elem-idx before-idx]
         (target-move target elem-idx before-idx))
       (-target-remove [this elem-idx]
         (target-remove target elem-idx))
       (-target-clear [this]
         (target-clear target)))

     (defn pwrap [proj wrap-fn]
       (reify IProjection

           (target-take target j)))
       (-target-count [this]
         (target-count target))
       (-target-move [this elem-idx before-idx]))

     (defn poffset [proj offset]
       (reify IProjection
