             else { return nil }
         self = instance
     }
+    
+    /// Create a model from a dictionary representation 
+    public init?(content: [String : Any]) {
+        guard let instance = Self.read(from: Store(data: content))
+            else { return nil }
+        self = instance
+    }
 
     /// Write the store content to a file in the specified format.
     ///

        self.write(to: &vstore)
        return format.makeData(from: vstore.data as NSDictionary, prettyPrint: true)
    }

    // note: these default implementations do nothing


   /// Return the model array content as data in the specified format.
    public func makeData(format: Format) -> Data? {
        return format.makeData(from: encodeToData() as AnyObject, prettyPrint: true)
    }
    
    /// Return the model array content as a dictionary array
    public func makeDictionaryArray() -> [[String : Any]] {
        return self.encodeToData() as! [[String : Any]]
    }

    func encodeToData() -> Any {
