 /// state of the object remains the same when deserializing from a previously
 /// serialized object.
 public protocol Serializable {
-    /// Initializes an instance of this type from a given serialized state.
-    ///
-    /// - Parameter json: A state that was previously serialized by an instance
-    /// of this type using `serialized()`
-    /// - Throws: Any type of error during deserialization.
-    init(json: JSON) throws
-    
     /// Serializes the state of this component into a JSON object.
     ///
     /// - Returns: The serialized state for this object.

            
            serializedComps.append(serialize(ser))
        }
        
        data["components"].arrayObject = serializedComps.map { $0.serialized().object }
        
        return Serialized(typeName: name, contentType: type, data: data)
    }
    
    /// Serializes a game space passed in.

    public func serialize(_ space: Space) throws -> Serialized {
        let type = Serialized.ContentType.space
        let name = String(describing: Space.self)

        var serializedEntities: [Serialized] = []
        
        for entity in space.entities {
