 
 @objc public protocol SubscriptionViewControllerDelegate {
     func subscriptionViewControllerRowTapped(atIndex index: Int)
+    func restoreButtonTapped()
 }
 
 public class SubscriptionViewController: UIViewController, SubscribeViewDelegate {
     public var delegate: SubscriptionViewControllerDelegate?
     
     private var subscribeView: SubscribeView
+    private lazy var restorePurchasesButton: UIButton = {
+        let button = UIButton()
+        button.titleLabel?.font = .systemFontOfSize(18)
+        button.addTarget(self, action: #selector(restoreButtonTapped),
+                         forControlEvents: .TouchUpInside)
+        return button
+    }()
     private var constraintsSetUp = false
     
     // MARK: - Init
     
     public init(title: String, images: [UIImage], commentTexts: [String], commentSubtitleTexts: [String],
-                     subscribeOptionsTexts: [String], cancelOptionText: String) {
+                subscribeOptionsTexts: [String], cancelOptionText: String, restoreButtonTitle: String) {
         subscribeView = SubscribeView(title: title, images: images,
                                       commentTexts: commentTexts,
                                       commentSubtitleTexts: commentSubtitleTexts,
                                       subscribeOptionsTexts: subscribeOptionsTexts,
                                       cancelOptionText: cancelOptionText)
         super.init(nibName: nil, bundle: nil)
+        
         subscribeView.delegate = self
+        restorePurchasesButton.setTitle(restoreButtonTitle, forState: .Normal)
+        
+        definesPresentationContext = true
+        providesPresentationContextTransitionStyle = true
+        modalPresentationStyle = .OverCurrentContext
     }
     
     required public init?(coder aDecoder: NSCoder) {

    
    override public func viewDidLoad() {
        super.viewDidLoad()
        setupViews()
        view.setNeedsUpdateConstraints()
    }
    

    
    // MARK: - Private
    
    func restoreButtonTapped() {
        guard let delegate = delegate else { return }
        delegate.restoreButtonTapped()
    }
    
    // MARK: - SubscriptionViewDelegate
    
    func rowTapped(atIndex index: Int) {
        guard let delegate = delegate else { return }
