         :param: completionHandler The callback to be executed when the request has finished.
     */
     public func createEvent(event: Event, completionHandler: (NSURLRequest, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) {
-        if event.event == Event.UnsetEvent && event.properties?.isEmpty == true {
-            // Properties cannot be empty for $unset event
-            return
-        }
-        
-        request(.POST, _createEventFullURL, parameters: event.toDictionary(), encoding: .JSON)
+        assert((event.event == Event.UnsetEvent && event.properties?.isEmpty == true) == false, "Properties cannot be empty for $unset event")
+        
+        request(.POST, _fullURLForCreatingEvent, parameters: event.toDictionary(), encoding: .JSON)
             .responseJSON { (request, response, JSON, error) -> Void in
                 completionHandler(request, response, JSON, error)
             }

    */
    public func deleteEvent(eventID: String, completionHandler: (NSURLRequest, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) {
        if let escapedEventID = eventID.stringByReplacingPercentEscapesUsingEncoding(NSUTF8StringEncoding) {
            request(.DELETE, _getEventFullURL(escapedEventID))
                .responseJSON { (request, response, JSON, error) -> Void in
                    completionHandler(request, response, JSON, error)
            }

    /// The access key for your application
    let accessKey: String
    
    private var _fullURLForCreatingEvent: String {
        return "\(baseURL)/events.json?accessKey=\(accessKey)"
    }
    
    private func _fullURLForGettingEvent(eventID: String) -> String {
        return "\(baseURL)/events/\(eventID).json?accessKey=\(accessKey)"
    }
    
