 public class WebViewController: UIViewController {
     
     private(set) public var url: NSURL?
-    var shouldAnimateHistoryChange = true
-    var isSharingWebView = false
-    
-    lazy var placeholderImageView: UIImageView = {
-        let imageView = UIImageView(frame: self.view.bounds)
-        self.view.insertSubview(imageView, atIndex: 0)
-        return imageView
-    }()
-    
-    private(set) public lazy var webView: UIWebView = {
-        let webView = UIWebView(frame: self.view.bounds)
-        webView.delegate = self
-        self.view.addSubview(webView)
-        return webView
+    private var shouldAnimateHistoryChange = true
+    private var hasAppeared = false
+    private var showWebViewOnAppear = false
+    private(set) public var webView = UIWebView(frame: CGRectZero)
+
+    private lazy var placeholderImageView: UIImageView = {
+        return UIImageView(frame: self.view.bounds)
     }()
     
     var isAppearingFromPop: Bool {

    
    override public func viewDidLoad() {
        super.viewDidLoad()
        
        if isSharingWebView {
            containWebView()
            webView.scrollView.contentInset = UIEdgeInsetsZero
        }
    }
    
    public override func viewWillAppear(animated: Bool) {

    convenience init(webView: UIWebView) {
        self.init(nibName: nil, bundle: nil)
        self.webView = webView
        self.webView.delegate = self
    }
    
    deinit {
