         tableView.rowHeight = UITableViewAutomaticDimension
         tableView.estimatedRowHeight = 44
 
+        refreshControl = UIRefreshControl()
+        refreshControl?.addTarget(self, action: "handleRefresh", forControlEvents: UIControlEvents.ValueChanged)
+
         tableView.addInfiniteScrollingWithActionHandler {
             if let section = self.section {
                 WhisperRequestManager.sharedInstance.requestForWhispers(

        tableView.beginUpdates()
        tableView.insertRowsAtIndexPaths(
            indexPaths,
            withRowAnimation: UITableViewRowAnimation.Fade)
        tableView.endUpdates()
    }

    // MARK: - Table view data source

        super.didReceiveMemoryWarning()
    }

    func handleRefresh() {
        if let section = self.section {
            WhisperRequestManager.sharedInstance.requestForWhispers(section, offset: 0)
        } else {
            refreshControl?.endRefreshing()
        }
    }

    // MARK: - WhisperRequestManager delegate methods

    func whisperRequestManager(whisperRequestManager: WhisperRequestManager, didReceiveWhispers newWhispers: [Whisper]) {
        SVProgressHUD.dismiss()
        tableView.infiniteScrollingView.stopAnimating()

        if let isRefreshing = refreshControl?.refreshing where isRefreshing {
            whispers.removeAll()
            tableView.reloadData()
        }

        var indexPaths = [NSIndexPath]()
        for i in (whispers.count..<(whispers.count + newWhispers.count)) {
