         self.adjustContentInsetTop()
         self.registerCell("UserTableViewCell", identifier: "UserTableViewCell")
 
-        guard let control = self.refreshControl else { return }
-        control.rx_controlEvents(.ValueChanged).startWith({ print("Start loading...") }())
-            .flatMap {
-                return User.fetch()
-            }.subscribeNext { [unowned self] result in
-                self.users = result
-                control.endRefreshing()
-            }.addDisposableTo(self.disposeBag)
-
-        self.tableView.rx_itemDeleted.subscribeNext { [unowned self] indexPath in
-            var data = self.users
-            let nextIndex = Int(arc4random_uniform(18) + 11) // Select from remaining users
-            let prevData = data[indexPath.row]
-
-            data[indexPath.item] = data[nextIndex]
-            data[nextIndex] = prevData
-            self.users = data
-        }.addDisposableTo(self.disposeBag)
+        self.subscribe()
     }
 
     override func didReceiveMemoryWarning() {


        self.tableView.registerNib(nib, forCellReuseIdentifier: identifier)
        self.cellIdentifier = identifier
    }



        return cell
    }

    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return UserTableViewCell.rowHeight
    }


    // MARK: - Instance methods

    private func subscribe() {
        [
            self.refreshControl!.rx_controlEvents(.ValueChanged).startWith({ print("Start loading...") }())
                .flatMap { return User.fetch() }
                .subscribeNext { [unowned self] result in
                    self.users = result
                    self.refreshControl!.endRefreshing()
                },

            self.tableView.rx_itemDeleted.subscribeNext { [unowned self] indexPath in
                self.switchUserForIndexPath(indexPath)
            },

            self.tableView.rx_itemSelected.subscribeNext { [unowned self] indexPath in
                self.showUserProfile(indexPath)
            }
        ].forEach { $0.addDisposableTo(self.disposeBag) }
    }

    private func userForIndexPath(indexPath: NSIndexPath) -> User? {
        if indexPath.section != 0 || self.users.count <= indexPath.item { return nil }
