             }
         }
     }
+    
+    public subscript(range: Range<Index>) -> OrderedDictionary<Key, Value> {
+        get {
+            var returnDict = OrderedDictionary<Key, Value>()
+            var keys = self.keys
+            var dict = self.dictionary
+            
+            keys.replaceRange(range, with: [])
+            
+            for key in keys {
+                dict.removeValueForKey(key)
+            }
+            
+            returnDict.keys = Array(self.keys[range])
+            returnDict.dictionary = dict
+            
+            return returnDict
+        }
+    }
+    
+    
+    
 }
        return value
    }
    
    public mutating func replaceRange<C : CollectionType where C.Generator.Element == Element>(subRange: Range<Int>, with newElements: C) {
        for key in keys[subRange.startIndex...subRange.endIndex] {
            dictionary.removeValueForKey(key)

    }
    
    /// Access the value associated with the given key.
    public subscript(key: Key) -> Value? {
        get {
            return dictionary[key]
        }
