 
 protocol CRUberRequest {
     
-    var host : String { get }
-    var requestUrl : String { get }
-    var HTTPMethod : CRHTTPMethod { get }
-    var queryParameters : [ String : AnyObject ] { get }
+    var host: String { get }
+    var requestUrl: String { get }
+    var HTTPMethod: CRHTTPMethod { get }
+    var queryParameters: [ String : AnyObject ] { get }
     
     func send()
 }
 
 extension CRUberRequest {
     
-    var host : String {
-        get {
-            return "https://api.uber.com/v1/"
-        }
+    var host: String {
+        return "https://api.uber.com/v1/"
     }
     
     func send() {
         
-        var paramsArray : Array<String> = Array()
+        var paramsArray: Array<String> = Array()
         
         for (key, value) in self.queryParameters  {
             paramsArray.append(key + "=" + "\(value)") // TODO: Not this! (FIST)

            self.endLongitude = endLongitude
    }
    
    var requestUrl : String {
        get {
            return "promotions"
        }
    }
    
    var queryParameters : [ String : AnyObject ] {
        get {
            return [
                "start_latitude" : startLatitude,
                "start_longitude" : startLongitude,
                "end_latitude" : endLatitude,
                "end_longitude" : endLongitude
            ]
        }
    }
    
    var HTTPMethod : CRHTTPMethod {
        get {
            return CRHTTPMethod.GET
        }
    }
}



struct CRUberProductsRequest : CRUberRequest {
    
    var latitude: Double
    var longitude: Double
    
    init(withLatitude latitude: Double, longitude: Double) {
        self.latitude = latitude
        self.longitude = longitude
    }
    
    var requestUrl: String {
        return "products"
    }
    
    var queryParameters: [ String : AnyObject ] {
        return [
            "latitude" : latitude,
            "longitude" : longitude
        ]
    }
    
    var HTTPMethod: CRHTTPMethod {
        return CRHTTPMethod.GET
    }
}

struct CRUberPriceEstimatesRequest : CRUberRequest {
    
    var startLatitude: Double
    var startLongitude: Double
    var endLatitude: Double
    var endLongitude: Double
    
    init(withStartLatitude
        startLatitude: Double,
        startLongitude: Double,
        endLatitude: Double,
        endLongitude: Double) {
            
            self.startLatitude = startLatitude
