         return row
     }
     
-    init(username: String, password: String, id: Identifier? = nil, firstName: String? = nil, lastName: String? = nil, email: String? = nil) {
+    init(username: String? = nil, password: String? = nil, id: Identifier? = nil, firstName: String? = nil, lastName: String? = nil, email: String? = nil) {
         self.username = username
         self.password = password
         self.id = id

    
    let storage = Storage()
    
    let username: String
    var password: String
    var firstName: String? = nil
    var lastName: String? = nil
    var email: String? = nil

extension User: JSONConvertible {
    
    convenience init(json: JSON) throws {
        self.init(username: try json.get("username") ?? nil,
                  password: try json.get("password") ?? nil,
                  id: try json.get("id") ?? nil,
                  firstName: try json.get("firstName") ?? nil,
                  lastName: try json.get("lastName") ?? nil,
                  email: try json.get("email") ?? nil)
    }
    
    func makeJSON() throws -> JSON {
