     }
 }
 
-public class NotificationBanner: UIToolbar {
-
+public class NotificationBanner: UIView {
+    
+    public static var animateDuration: NSTimeInterval = 0.3
+    public static var fallbackToBannerOnMainWindow: Bool = false
+    public var errorBackgroundColor = UIColor(white: 0.2, alpha: 1.0)
+    public var regularBackgroundColor = UIColor.greenColor()
+    
+    override public var backgroundColor: UIColor! {
+        didSet {
+            underStatusBarView?.backgroundColor = backgroundColor?.colorWithAlphaComponent(0.85)
+        }
+    }
+    
     public static func showMessage(message: Message) {
         
         guard NSThread.mainThread() == NSThread.currentThread() else {

    private static var currentMessage: Message?
    private static var pendingMessages = [Message]()
    
    private static let animateDuration: NSTimeInterval = 0.3
    private class var messageShownFrame: CGRect {
        let y = UIApplication.sharedApplication().statusBarHidden ? 0 : UIApplication.sharedApplication().statusBarFrame.height
        return CGRect(x: 0, y: y, width: sharedToolbar.frame.width, height: sharedToolbar.frame.height)
    }
    private class var messageHiddenFrame: CGRect {
        return CGRect(x: 0, y: -sharedToolbar.frame.height, width: sharedToolbar.frame.width, height: sharedToolbar.frame.height)
    }
    
    required public init?(coder aDecoder: NSCoder) {

        currentMessageTimer = nil
        currentMessage = nil
    }
    
    @IBAction @objc private func messageLabelTapped(sender: UIButton) {
        if let key = NotificationBanner.currentMessage?.actionKey,
            let action = Message.actions[key] {
            action()
        }
    }
    
    @IBAction @objc private func closeButtonTapped(sender: UIButton) {
        NotificationBanner.hideCurrentMessage(true) {
            if let next = NotificationBanner.pendingMessages.last {
                NotificationBanner.showMessage(next)
