   }
 }
 
+// Table View Switching
+
+extension TwitterProfileViewController {
+  func updateTableViewContent() {
+    print("contentType did changed \(self.contentType)")
+  }
+  
+  internal func segmentedControlValueDidChange(sender: AnyObject?) {
+    self.contentType = TableViewContentType(rawValue: self.segmentedControl.selectedSegmentIndex)!
+    
+    let tableViewToBeShown: UITableView! = self.currentTableView
+    
+    [tweetTableView, photosTableView, favoritesTableView].forEach { (tableView) in
+      tableView?.isHidden = tableView != tableViewToBeShown
+    }
+    
+    tableViewToBeShown.frame = self.computeTableViewFrame(tableView: tableViewToBeShown)
+    self.updateMainScrollViewFrame()
+    
+    // auto scroll to top if mainScrollView.contentOffset > navigationHeight + segmentedControl.height
+    let navigationFrame = self.computeNavigationFrame()
+    let navigationHeight = navigationFrame.height - abs(navigationFrame.origin.y)
+    let threshold = self.computeProfileHeaderViewFrame().originBottom - navigationHeight
+    
+    if mainScrollView.contentOffset.y > threshold {
+      self.mainScrollView.setContentOffset(CGPoint(x: 0, y: threshold), animated: false)
+    }
+  }
+}
+
 extension CGRect {
   var originBottom: CGFloat {
     return self.origin.y + self.height

    let _tweetTableView = UITableView(frame: _mainScrollView.bounds, style: .plain)
    _mainScrollView.addSubview(_tweetTableView)
    self.tweetTableView = _tweetTableView
  }
  
  func setupTables() {
    self.tweetTableView.delegate = self
    self.tweetTableView.dataSource = self
    self.tweetTableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
  }
  
  func computeStickyHeaderContainerViewFrame() -> CGRect {

  
  // Properties
  
  enum TableViewContentType: Int {
    case tweets = 0, photos = 1, favorites = 2
  }
  
  var contentType: TableViewContentType = .tweets {
    didSet { self.updateTableViewContent() }
  }
  
  var currentTableView: UITableView {
    switch contentType {
    case .tweets:
      return self.tweetTableView
    case .photos:
      return self.photosTableView
    case .favorites:
      return self.favoritesTableView
    default:
      return self.tweetTableView
    }
  }
  
  
  var mainScrollView: UIScrollView!
  
  var headerCoverView: UIImageView!
