     }
     
 }
+
+// MARK: - Utility Functions
 
 func synchronized(lock: NSLocking, @noescape handler: () -> Void) {
     lock.lock()

    }
    
}

public enum TimeInterval {
    case Finite(_: NSTimeInterval)
    case Infinite
}

public func notify(notification: Notification, animation: Animation = .Linear, lifetime: TimeInterval = .Finite(2.0), handler: () -> Void) -> Presentation {
    
    let presentation = Presentation()
    
    let identifier = NSUUID().UUIDString
    
    let dismisser = NotificationDismisser(identifier: identifier)
    
    var options = [String : AnyObject]()
    
    // configure appearance
    
    options[kCRToastTextKey]                            = notification.text
    options[kCRToastTextAlignmentKey]                   = notification.textAlignment.rawValue

    options[kCRToastSubtitleTextShadowColorKey]         = notification.subtextShadowColor
    options[kCRToastSubtitleTextShadowOffsetKey]        = NSValue(CGSize: notification.subtextShadowOffset)
    
    // Configuring Appearances
    
    options[kCRToastNotificationTypeKey]                = notification.heightType.crToastType.rawValue
    switch notification.heightType {
    case .Custom(let preferredHeight):
