         task.resume()
     }
     
-    private static func generateUrl(with parameters: [String: String]) -> URL {
+    private static func generateUrl(with parameters: [String: String]) -> URL? {
         let characterSet = CharacterSet.urlPathAllowed
         
         let joined = parameters.reduce("collect?") { path, query in

    
    private func send(_ type:  String, parameters: [String: String]) {
        guard let trackerId = trackerId else {
            fatalError("You must set your tracker ID UA-XXXXX-XX with GoogleReporter.configure()")
        }
        
        let queryArguments: [String: String] = [

    }()
    
    private lazy var appName: String = {
        return Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? "(not set)"
    }()
    
    private lazy var appIdentifier: String = {
        return Bundle.main.object(forInfoDictionaryKey: "CFBundleIdentifier") as? String  ?? "(not set)"
    }()
    
    private lazy var appVersion: String = {
        return Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String  ?? "(not set)"
    }()
    
    private lazy var appBuild: String = {
        return Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as? String  ?? "(not set)"
    }()
    
    private lazy var formattedVersion: String = {
