     }
     
     // Maps an optional NSData object to an array of objects that conform to Mappable
-    public func mapDataArray(JSONData: NSData?, keyPath: String? = nil) -> [N]? {
+    internal func mapDataArray(JSONData: NSData?, keyPath: String? = nil) -> [N]? {
         guard let JSONData = JSONData else {
             return nil
         }

    }
    
    // Maps an Object to a JSON string and represents it as NSData
    public func toJSONData(object: N) -> NSData? {
        let json = toJSONString(object)
        return json?.dataUsingEncoding(NSUTF8StringEncoding)
    }
    
    // Maps an array of Objects to a JSON string and represents it as NSData
    public func toJSONData(objects: [N]) -> NSData? {
        let json = toJSONString(objects)
        return json?.dataUsingEncoding(NSUTF8StringEncoding)
    }
    
    // Maps an Object to a JSON string with the given header and represents it as NSData
    public func toJSONData(object: N, header: String) -> NSData? {
        let json = toJSONString(object, header: header)
        return json?.dataUsingEncoding(NSUTF8StringEncoding)
    }
    
    // Maps an array of Objects to a JSON string with the given header and represents it as NSData
    public func toJSONData(objects: [N], header: String) -> NSData? {
        let json = toJSONString(objects, header: header)
        return json?.dataUsingEncoding(NSUTF8StringEncoding)
    }
    
    // Maps an optional NSData object to an object that conforms to Mappable.
    public func mapData(JSONData: NSData?, keyPath: String? = nil) -> N? {
        guard let JSONData = JSONData else {
            return nil
        }

    }
    
    // Maps an array of Objects to a JSON string with the given header
    internal func toJSONString(objects: [N], header: String) -> String? {
        let json = toJSONString(objects)
        if let json = json {
            return "{ \"\(header)\": \(json) }"
