 	- parameter fail: closure called when something in the response fails.
 	- throws : Errors related to the request construction.
 	*/
-	public class func retrieve <Type: ModelProtocol> (objectId:String, session: NSURLSession = NSURLSession(configuration:NSURLSessionConfiguration.defaultSessionConfiguration(), delegate: nil, delegateQueue: nil),
+	public class func retrieve <Type: ModelProtocol> (objectId:String, session: NSURLSession = NSURLSession(configuration:NSURLSessionConfiguration.defaultSessionConfiguration()),
 	                      responseController: ResponseController = ResponseController(),
 	                      succeed:(response: Type)->(), fail:((ResponseError)->())? = nil) throws{
 		let entity = Type()

			return
		}

		let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
			responseController.respond(data, urlResponse: response, error: error, succeed: succeed)
		})

		task.resume()
	}



		}
		request.URL = request.URL!.URLByAppendingPathComponent(objectId)

		performAsychonousRequest(request, session: session, responseController: responseController, succeed: succeed, fail: fail)
	}

	private class func performAsychonousRequest<Type: ModelProtocol> (request: NSURLRequest,
	                                            session: NSURLSession, responseController: ResponseController,
	                                            succeed:(response: Type)->(), fail:((ResponseError)->())? = nil ) {
		let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
			responseController.respond(data, urlResponse: response, error: error, succeed: succeed, fail: fail)
		})

		task.resume()
	}
	private class func performAsychonousRequest<Type: ModelProtocol> (request: NSURLRequest,
	                                            session: NSURLSession, responseController: ResponseController,
	                                            succeed:(response: [Type])->(), fail:((ResponseError)->())? = nil ) {
		let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
			responseController.respond(data, urlResponse: response, error: error, succeed: succeed, fail: fail)
		})

		task.resume()
	}
}

func dataAtUrl(url: String, transformController: TransformController) throws -> NSData?  {
