     next.previous = previous
     previous.next = next
     entry
-
-  # Generate a file name for a tier file with an optional suffix for temporary
-  # rewrite files. Tier file names are generated from the tier address.
-  filename: (address, suffix) ->
-    suffix or= ""
-    padding = "00000000".substring(0, 8 - String(address).length)
-    "#{@directory}/segment#{padding}#{address}#{suffix}"
-
-  allocateBranches: (penultimate) ->
-    address = @nextAddress++
-    tier = @link({ penultimate, address, addresses: [], cache: {} })
-    @cache[address] = tier
 
   allocateLeaves: (addresses, right) ->
     address = @nextAddress++

        # exclusive and shared locks to clear.
        key = tierOrAddress.cache[address] = @key address, 0, _
      key

  # Write the branches to a file as a JSON string. We tuck the tier properties
  # into an object before we serialize it, so that it is easy deserialize.
  writeBranches: (tier, suffix, _) ->
    filename = @filename tier.address, suffix
    record = [ tier.penultimate, tier.next?.address, tier.addresses ]
    json = JSON.stringify(record) + "\n"
    fs.writeFile filename, json, "utf8", _

  # Read branches from a brach tier file and assign the tier properties to the
  # given tier object.
  #
  # TODO: Move link to head always, to maintain MRU.
  readBranches: (tier, _) ->
    filename = @filename tier.address
    json = fs.readFile filename, "utf8", _
    [ penultimate, next, addresses ] = JSON.parse json
    extend tier, { penultimate, next, addresses }

  # TODO Consider: can't I always just rewrite and link?
  rewriteBranches: (tier, _) ->

# right penultimate page, we visit the right penultimate page, then we visit its
# left child, the leaf page whose first record is the key.
#
# ### Keys and First Records
#
# We said that it is only possible for an insertion to insert a into the left
# most child leaf page of a penumltimate branch page a record less than the least
