     
     private static let ModuleName = "drosky"
     private let networkManager: Alamofire.Manager
-    private lazy var backgroundNetworkManager: Alamofire.Manager = {
-        let appName = NSBundle.mainBundle().infoDictionary?[kCFBundleNameKey as String] as? String ?? Drosky.ModuleName
-        return Alamofire.Manager(configuration: NSURLSessionConfiguration.backgroundSessionConfiguration("\(appName)-\(NSUUID().UUIDString)"))
-    }()
+    private let backgroundNetworkManager: Alamofire.Manager
     private let queue = queueForSubmodule(Drosky.ModuleName, qualityOfService: .UserInitiated)
     private let gcdQueue = dispatch_queue_create(Drosky.ModuleName, DISPATCH_QUEUE_SERIAL)
     private let dataSerializer = Alamofire.Request.dataResponseSerializer()
     var router: Router
     
-    public init (environment: Environment, signature: Signature? = nil, configuration: NSURLSessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()) {
-        networkManager = Alamofire.Manager(configuration: configuration)
+    public init (environment: Environment, signature: Signature? = nil, backgroundSessionID: String = Drosky.backgroundID()) {
+        networkManager = Alamofire.Manager(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
+        backgroundNetworkManager = Alamofire.Manager(configuration: NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier(backgroundSessionID))
         router = Router(environment: environment, signature: signature)
         queue.underlyingQueue = gcdQueue
     }

    }
}

//MARK:- Errors

public enum DroskyErrorKind: ResultErrorType {

        let multipartRequestTuple = performUpload(generatedRequest, multipartParameters: multipartParams)
        let processedResponse = multipartRequestTuple.0 ≈> processResponse
        return (processedResponse, multipartRequestTuple.1)
    }

    //MARK:- Internal
