         self.encode(value, key)
     }
     
-    /// Merge a store into the receiver store
+    /// Merge a containers data into the receiver
     /// adding or updating any values
     public func merge(store: KVStoreContainer) {
         self.data.merge(store.data)

}

public class KVStoreDomain {
    
    /// The store containers contained in the domain
    public var containers : [String : KVStoreContainer] = [:]

public class KVStore {
    public var domains: [String : KVStoreDomain] = [:]
    
    
    public subscript(key: String) -> KVStoreDomain? {
        return domain(forKey: key)
    }
    
    public func addDomain(key: String, domain: KVStoreDomain = KVStoreDomain()) -> KVStoreDomain {
        precondition(!domains.keys.contains(key), "Domain already exsists: \(key)")
        self.domains[key] = domain
        return domain
    }
