   enum SessionTaskKind {
     case Data, Upload, Download
   }
-  
+
   public var additionalHeaders = [String: String]()
 
   var baseURLString: URLStringConvertible?

  lazy var session: NSURLSession = {
    return NSURLSession(configuration: self.sessionConfiguration.value)
  }()
  
  var requestHeaders: [String: String] {
    var headers = customHeaders
    
    headers["Accept-Language"] = Header.acceptLanguage
    
    additionalHeaders.forEach { key, value in
      headers[key] = value
    }
    
    return headers
  }


  func execute(method: Method, request: Requestable) -> Promise<NetworkResult> {
    let promise = Promise<NetworkResult>()
    let URLRequest: NSMutableURLRequest

    do {
      URLRequest = try request.toURLRequest(method,
        baseURLString: baseURLString, additionalHeaders: requestHeaders)
