                     cachedPageTabs[i] = tabView
                     tabSectionScrollView.addSubview(tabView)
                 }
-
-// TODO: Remove later
-//                // without lazy loading
-//                if (cachePageLimit <= 0) {
-//                    page.contentView.frame = CGRect(x: contentSectionScrollViewContentWidth, y: 0, width: page.contentView.frame.size.width, height: contentSectionScrollView.frame.size.height)
-//                    contentSectionScrollView.addSubview(page.contentView)
-//                }
-                
                 tabSectionScrollViewContentWidth += widthForTabAtIndex(i)
-                contentSectionScrollViewContentWidth += self.frame.width
-            }
-            tabSectionScrollView.contentSize = CGSize(width: tabSectionScrollViewContentWidth, height: tabSectionScrollViewHeight)
-            contentSectionScrollView.contentSize = CGSize(width: contentSectionScrollViewContentWidth, height: contentSectionScrollViewHeight)
-            
-            // set contentInset of tab
-            let tabPaddingLeft = (self.frame.size.width / 2) - (widthForTabAtIndex(0) / 2)
-            let tabPaddingRight = (self.frame.size.width / 2) - (widthForTabAtIndex(numberOfPages) / 2)
-            tabSectionScrollView.contentInset = UIEdgeInsets(top: 0, left: tabPaddingLeft, bottom: 0, right: tabPaddingRight)
-            
-            // set contentInset of content
-            let contentPaddingLeft = (self.frame.size.width / 2) - (self.frame.width / 2)
-            let contentPaddingRight = (self.frame.size.width / 2) - (self.frame.width / 2)
-            contentSectionScrollView.contentInset = UIEdgeInsets(top: 0, left: contentPaddingLeft, bottom: 0, right: contentPaddingRight)
+            }
+            tabSectionScrollView.contentSize = CGSize(width: tabSectionScrollViewContentWidth, height: tabSectionHeight)
             
             // first time
             if (!isStarted) {

    
    private var changePageWaitForCallback = false
    private var changePageCallback: ((Void) -> (Void))?
    
    // MARK: DataSource
    private var numberOfPages: Int {

//                page.isLoaded = false
//            }
            
            // reset the fixed size of tab section
            tabSectionHeight = defaultTabHeight
            tabSectionScrollView.frame = CGRect(x: 0, y: 0, width: self.frame.size.width, height: tabSectionHeight)
            tabSectionScrollView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "tabSectionScrollViewDidClick:"))
            tabSectionScrollView.contentInset = UIEdgeInsets(
                top: 0,
                left: (self.frame.width / 2) - (widthForTabAtIndex(0) / 2),
                bottom: 0,
                right: (self.frame.width / 2) - (widthForTabAtIndex(numberOfPages) / 2))
            
            // reset the fixed size of content section
            contentSectionHeight = self.frame.size.height - tabSectionHeight
            contentSectionScrollView.frame = CGRect(x: 0, y: tabSectionHeight, width: self.frame.size.width, height: contentSectionHeight)
            
            // set tabs
            var tabSectionScrollViewContentWidth: CGFloat = 0
            for i in 0..<numberOfPages {
                if let tabView = tabViewForPageAtIndex(i) {
                    tabView.frame = CGRect(
