   private var onEmptyViewControllers: (() -> ())!
   
   /// Present `viewController` taking into account it's level
-  func showSystemViewController<T: UIViewController where T: SystemViewController>(viewController: T) {
-    print(viewController.debugDescription)
-    print(viewController.modalPresentationStyle.rawValue)
+  func showSystemViewController(viewController: UIViewController, atLevel level: SystemViewControllerLevel) {
     if viewController.modalPresentationStyle == .FullScreen {
       addChildViewController(viewController)
-      insertView(viewController.view, atLevel: viewController.viewControllerLevel)
+      insertView(viewController.view, atLevel: level)
       viewController.didMoveToParentViewController(self)
     }
     else {

public typealias SystemViewControllerLevel = Int
public let SystemViewControllerLevelTop = Int.max

/// Each System view controller should conform to this protocolc
public protocol SystemViewController {
  /// Level at which view controller should appear
  var viewControllerLevel: SystemViewControllerLevel { get }
}

/// Use to place a System view controller above everthing else in app, even status bar and notifications.
///
/// An example of such System view controller is `Update Required` screen.
public final class SystemWindowController {
  /// Private init so that we can only have one `SystemWindowController`. Use SystemWindowController constant
  private let windowLevel: UIWindowLevel
  public init(windowLevel: UIWindowLevel) {

   
   - parameter viewController: a view controller to present
   */
  public func showSystemViewController(viewController: UIViewController, atLevel level: SystemViewControllerLevel) {
    if !window.keyWindow { showSystemWindow() }
    
    self.viewController.showSystemViewController(viewController, atLevel: level)
  }
  
  /**
