     @[@operation.method].call this, parent, child, _
 
   insertSorted: (parent, child, _) ->
-    branch = @find child, 1, @_branchExtractor, @fields, _
+    branch = @find child, _
     leaves = @io.lock true, child.addresses[branch], true, _
 
     addresses = leaves.addresses
 
     # Insert the object value sorted.
     for i in [0...addresses.length]
-      before = leaf.record(i)
-      if @comparator(mutation.fields, @extract before) <= 0
+      key = @io.key(leaves, i, _)
+      if @comparator(@fields, key) <= 0
         break
 
     address = @io.writeInsert leaves, @object, i
     addresses.splice i, 0, address
 
   get: (parent, child, _) ->
-    branch = @find child, 1, @_branchExtractor, @fields, _
+    branch = @find child, _
     leaves = @io.lock true, child.addresses[branch], true, _
-    address = @find leaves, 0, @extractor, @fields, _
-    leaves.objects[address]
+    address = @find leaves, _
+    leaves.cache[leaves.addresses[address]]
 
 class Level
   # Construct a new level. The `exclusive` pararameter determines how this level

extractor = (a) -> a

class IO
  constructor: (@directory) ->
    @cache          = {}
    @head           = { address: -1 }
    @head.next      = @head


  allocateBranches: (penultimate) ->
    address = @nextAddress++
    tier = @_link({ penultimate, address, addresses: [], cache: {} })
    @cache[address] = tier

  allocateLeaves: (_) ->
    address = @nextAddress++
    filename = @filename address
    fs.writeFile filename, "", "utf8", _
    @cache[address] = @_link({ leaves: true, address, cache: [] })

  readLeaves: (tier, _) ->
    filename = @filename tier.address
