         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]
         }

        self.init()
        
        for element in elements {
            keys.append(element.0)
            _dictionary[element.0] = element.1
        }

    }
    
    /// Removes all elements.
    public mutating func removeAll(keepCapacity keepCapacity: Bool = false) {
        _dictionary.removeAll(keepCapacity: keepCapacity)
        keys.removeAll(keepCapacity: keepCapacity)
    }
    
    /// Remove the key-value pair at index.
    public mutating func removeAtIndex(index: Index) -> Element? {
        let key = keys[index]
        let value = _dictionary.removeValueForKey(key)
        
