     public private(set) var resourceUrl: String
     public let httpMethod: HttpMethod
     public var timeout: Double
-    public private(set) var headers: [String: String]?
+    public private(set) var headers: [String: String]
     // TODO: Append query parameters to the URL right before sending the request (like in Android SDK)
     public var queryParameters: [String: String]?
     public private(set) var requestBody: NSData?

    // MARK: Methods (public)
    
    // TODO: Perform error handling or make the developer do it?
    public func setRequestBodyWithJSON(requestJSON: AnyObject) throws {
        
        requestBody = try NSJSONSerialization.dataWithJSONObject(requestJSON, options: NSJSONWritingOptions.PrettyPrinted)
    }
    
    // Only supports UTF-8 encoding
    public func setRequestBodyWithString(requestString: String) {
        
        requestBody = requestString.dataUsingEncoding(NSUTF8StringEncoding)
    }
    
    public func setRequestBodyWithData(requestData: NSData) {

        }
        
        // Build request
        if let _ = queryParameters {
            resourceUrl = appendQueryParameters(queryParameters!, toURL: self.resourceUrl)
        }
        networkRequest.HTTPMethod = httpMethod.rawValue
        networkRequest.allHTTPHeaderFields = headers
        networkRequest.HTTPBody = requestBody
        
