     }
 
     let key = nativeStorage.assertingGet(nativeIndex).0
-    let start = nativeStorage._bucket(key)
-    nativeDeleteImpl(nativeStorage, start: start, offset: nativeIndex.offset)
+    nativeDeleteImpl(nativeStorage, idealBucket: nativeStorage._bucket(key),
+        offset: nativeIndex.offset)
   }
 
   mutating func removeAtIndex(index: Index) {

    }
  }

  /// :param: start The offset of the beginning of the chain.
  /// :param: offset The offset of the element that will be deleted.
  mutating func nativeDeleteImpl(
      nativeStorage: NativeStorage, var start: Int, offset: Int
  ) {
    // remove the element
    nativeStorage[offset] = .None

    var hole = offset

    // Find the first bucket in the contigous chain
    var start = idealBucket
    while nativeStorage[nativeStorage._prev(start)] {
      start = nativeStorage._prev(start)
    }
