     ///   - method: Request method
     ///   - accessToken: Access token
     ///   - params: JSON-encodable object
+    ///   - headers: Http headers
     /// - Throws: ServiceRequestError.invalidGetRequestParameters,
     ///               if GET request is initialized and params are not [String: String]
     ///           ServiceRequestError.urlComponentsConvertingFailed,
     ///               if error occured while building url from components during GET request
     ///           Rethrows from JSONSerialization
-    public init(url: URL, method: Method, accessToken: String, params: Any? = nil) throws {
+    public init(url: URL, method: Method, accessToken: String, params: Any? = nil,
+                headers: [String: String] = [:]) throws {
         let bodyData: Data?
         let newUrl: URL
 

    ///   - method: Request method
    ///   - accessToken: Access token
    ///   - params: Encodable request body
    /// - Throws: ServiceRequestError.getQueryWithDecodableIsNotSupported, if GET query with params
    ///           Rethrows from JSONEncoder
    public init<T: Encodable>(url: URL, method: Method, accessToken: String, params: T? = nil) throws {
        let bodyData: Data?
        let newUrl: URL


            newUrl = url
        }

        var requestHeaders = [ServiceRequest.accessTokenHeader: "\(ServiceRequest.accessTokenPrefix) \(accessToken)"]

        try requestHeaders.merge(headers) { _, _ in throw ServiceRequestError.duplicateHeadersKey }
        
        super.init(url: newUrl, method: method, headers: requestHeaders, body: bodyData)
    }

    /// Initializer
