 import Foundation
 
-final class Mapper {
+public class Mapper {
 
     private let jsonObject: [String: Any]?
     private let jsonArray: [Any]?
 
-    init(_ json: [String: Any]) {
+    public init(_ json: [String: Any]) {
         self.jsonObject = json
         self.jsonArray = nil
     }
 
-    init(_ json: [Any]) {
+    public init(_ json: [Any]) {
         self.jsonObject = nil
         self.jsonArray = json
     }
-
-    var count: Int {
-        if let jsonObject = jsonObject {
-            return jsonObject.count
-        } else if let jsonArray = jsonArray {
-            return jsonArray.count
-        } else {
-            return 0
-        }
-    }
-
-    func value<T: Transform>(_ key: String, using transform: T) throws -> T.Object {
+    
+    public func value<T: Transform>(_ key: String, using transform: T) throws -> T.Object {
         if let object = jsonObject?[key], let t = transform.transform(input: object) {
             return t
         } else {

        }
    }

    func value<T>(_ key: String) throws -> T {
        if let t = jsonObject?[key] as? T {
            return t
        } else {

    }
}

public class URLTransform: Transform {
    typealias Object = URL

    func transform(input: Any) -> URL? {
