         throw ParserError(message: "Unexpected error")
     }
     
-    public func fetchOptional<T>(key: String) throws -> T? {
+    public func fetchOptional<T>(_ key: String) throws -> T? {
         return try self.fetchOptional([key])
     }
     
-    public func fetchOptional<T>(keys: [String]) throws -> T? {
+    public func fetchOptional<T>(_ keys: [String]) throws -> T? {
         
         guard keys.count > 0 else {
             throw ParserError(message: "No specified keys")

        return nil
    }
    
    public func fetch<T, U>(key: [String], transformation: T -> U?) throws -> U {
        let fetched: T = try fetch(key)
        guard let transformed = transformation(fetched) else {
            throw ParserError(message: "The value \"\(fetched)\" at key \"\(key)\" could not be transformed.")


typealias 🔨 = ParsableObject

struct ParserError: Error {
    let message: String
}

