   (insert [this k v]))
 
 (defprotocol B+TreeLookupable
-  (lookup [this k]))
+  (lookup [this k leaf-neighbours]))
 
 (defprotocol B+TreeLeafNodeIterable
   (iterate-leafnodes [this]))


  B+TreeLookupable

  (lookup [this k]
    (letfn [(range-lookup [{:keys [m] :as this} klen]
              (println "RANGE LOOKUP" k klen (keys m))
              (when (<= (cmp-keys (-> m keys first) k) 0)


  B+TreeLookupable

  (lookup [this k leaf-neighbours]
    (loop [[k* & ks*] ks
           [v* & vs*] vs]
      (cond
