         fatalError("NSCoding not supported")
     }
 
-    public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
-        super.init(nibName:nibNameOrNil, bundle:nibBundleOrNil)
+    public init(titleObject: AnyObject) {
+        self.anyTitleObject = titleObject
+        super.init(nibName: nil, bundle: nil)
+
+        self.modalPresentationStyle = UIModalPresentationStyle.Custom
+        self.transitioningDelegate = self
     }
 
     public convenience init(title: String?, message: String?, preferredStyle: APMAlertControllerStyle) {
-        self.init(nibName: nil, bundle: nil)
+        self.init(titleObject: UILabel())
         self.alertTitle = title
-        self.alertTitleImage = nil
         self.alertMessage = message
-        commonInit()
     }
 
     public convenience init(titleImage: UIImage?, message: String?, preferredStyle: APMAlertControllerStyle) {
-        self.init(nibName: nil, bundle: nil)
-        self.alertTitle = nil
+        self.init(titleObject: UIImageView())
         self.alertTitleImage = titleImage
         self.alertMessage = message
-        commonInit()
-    }
-
-    private func commonInit() {
-        modalPresentationStyle = UIModalPresentationStyle.Custom
-        transitioningDelegate = self
     }
 
     public override func viewDidLoad() {
         super.viewDidLoad()
 
+        configureView()
+        configureLayout()
+    }
+
+    func configureView() {
         alertView.translatesAutoresizingMaskIntoConstraints = false
         alertView.backgroundColor = UIColor(white: 1, alpha: 0.95)
         alertView.layer.cornerRadius = 12
         alertView.clipsToBounds = true
         view.addSubview(alertView)
+
+        topScrollView.translatesAutoresizingMaskIntoConstraints = false
+        alertView.addSubview(topScrollView)
+
+        contentView.translatesAutoresizingMaskIntoConstraints = false
+        topScrollView.addSubview(contentView)
+
+        switch anyTitleObject {
+        case let titleImageView as UIImageView:
+            titleImageView.translatesAutoresizingMaskIntoConstraints = false
+            titleImageView.contentMode = .ScaleAspectFit
+            titleImageView.image = alertTitleImage?.imageWithRenderingMode(.AlwaysTemplate)
+            titleImageView.alpha = 0.8
+            contentView.addSubview(titleImageView)
+        case let titleLabel as UILabel:
+            titleLabel.translatesAutoresizingMaskIntoConstraints = false
+            titleLabel.font = UIFont.boldSystemFontOfSize(16)
+            titleLabel.textAlignment = .Center
+            titleLabel.numberOfLines = 0
+            titleLabel.text = alertTitle
+            contentView.addSubview(titleLabel)
+        default:
+            break
+        }
+
+        titleMessageSeparator.translatesAutoresizingMaskIntoConstraints = false
+        titleMessageSeparator.backgroundColor = separatorColor
+        titleMessageSeparator.hidden = true
+        contentView.addSubview(titleMessageSeparator)
+
+        messageLabel.translatesAutoresizingMaskIntoConstraints = false
+        messageLabel.font = UIFont.systemFontOfSize(16)
+        messageLabel.textAlignment = .Center
+        messageLabel.text = alertMessage
+        messageLabel.numberOfLines = 0
+        contentView.addSubview(messageLabel)
+
+        buttonsView.translatesAutoresizingMaskIntoConstraints = false
+        buttonsView.backgroundColor = separatorColor
+        alertView.addSubview(buttonsView)
+    }
+
+    func configureLayout() {
         view.addConstraints([
                 NSLayoutConstraint(item: alertView, attribute: .CenterX, relatedBy: .Equal, toItem: view, attribute: .CenterX, multiplier: 1.0, constant: 0),
                 NSLayoutConstraint(item: alertView, attribute: .CenterY, relatedBy: .Equal, toItem: view, attribute: .CenterY, multiplier: 1.0, constant: 0),

        titleMessageSeparator.hidden = !showTitleMessageSeparator
        topTitleMessageSeparatorConstraint.constant = showTitleMessageSeparator ? 14 : 0

        titleLabel.textColor = tintColor
        imageView.tintColor = tintColor
        messageLabel.textColor = tintColor
    }


        didSet {
            buttonsView.removeConstraints(buttonsView.constraints)
            for (index, value) in buttons.enumerate() {
                value.setTitleColor(tintColor, forState: .Normal)
                value.setTitleColor(tintColor.colorWithAlphaComponent(0.33), forState: .Highlighted)
                value.setTitleColor(tintColor.colorWithAlphaComponent(0.33), forState: .Selected)

                let top = NSLayoutConstraint(item: value, attribute: .Top, relatedBy: .Equal, toItem: buttonsView, attribute: .Top, multiplier: 1.0, constant: 1)
                let bottom = NSLayoutConstraint(item: value, attribute: .Bottom, relatedBy: .Equal, toItem: buttonsView, attribute: .Bottom, multiplier: 1.0, constant: 0)
