         return value
     }
     
+    public mutating func append(x: Element) {
+        guard keys.indexOf(x.0) == nil else { return }
+        
+        keys.append(x.0)
+        _dictionary[x.0] = x.1
+    }
+    
+    public mutating func appendContentsOf<S : SequenceType where S.Generator.Element == Element>(newElements: S) {
+        for element in newElements {
+            self.append(element)
+        }
+    }
+    
+    /// Append the elements of newElements to self.
+    public mutating func appendContentsOf<C : CollectionType where C.Generator.Element == Element>(newElements: C) {
+        for element in newElements {
+            self.append(element)
+        }
+    }
+    
+    public mutating func insert(newElement: Element, atIndex i: Int) {
+        guard keys.indexOf(newElement.0) == nil else { return }
+        
+        keys.insert(newElement.0, atIndex: i)
+        _dictionary[newElement.0] = newElement.1
+    }
+    
+    public mutating func removeAtIndex(index: Int) -> Element {
+        let key = keys.removeAtIndex(index)
+        return (key, _dictionary[key]!)
+    }
+    
+    public mutating func replaceRange<C : CollectionType where C.Generator.Element == Element>(subRange: Range<Int>, with newElements: C) {
+        // TODO:
+    }
+    
     // MARK: - Subscripts
     public subscript(index: Index) -> Element {
         return (keys[index], _dictionary[keys[index]]!)
     }
     
     /// Access the value associated with the given key.
-    subscript (key: Key) -> Value? {
+    public subscript (key: Key) -> Value? {
         get {
             return _dictionary[key]
         }

    }
    
    /// Remove a given key and the associated value from the dictionary. Returns the value that was removed, or nil if the key was not present in the dictionary.
    mutating func removeValueForKey(key: Key) -> Value? {
        guard let value = _dictionary.removeValueForKey(key) else { return nil }
        
        if let index = keys.indexOf(key) {

    }
    
    /// Update the value stored in the dictionary for the given key, or, if the key does not exist, add a new key-value pair to the dictionary.
    public mutating func updateValue(value: Value, forKey key: Key) -> Value? {
        let value = _dictionary.updateValue(value, forKey: key)
        
        if value == nil {
