             if let lastPost = posts.last {
                 loadingBottom = true
                 requestPosts(posts.count, parameters: ["before_id" : "\(lastPost.id)", "reblog_info" : "true"]) { (response: AnyObject!, error: NSError!) -> Void in
-                    if let e = error {
-                        print(e)
-                        self.loadingBottom = false
+                    if let error = error {
+                        dispatch_async(dispatch_get_main_queue()) {
+                            self.presentError(error)
+                            self.loadingBottom = false
+                        }
                     } else {
-                        dispatch_async(self.postParseQueue, {
+                        dispatch_async(self.postParseQueue) {
                             let posts = self.postsFromJSON(JSON(response))
                             dispatch_async(dispatch_get_main_queue()) {
                                 self.processPosts(posts)
 
-                                dispatch_async(dispatch_get_main_queue(), {
+                                dispatch_async(dispatch_get_main_queue()) {
                                     self.loadingCompletion = {
                                         let indexSet = NSMutableIndexSet()
                                         for row in self.posts.count..<(self.posts.count + posts.count) {

                                    self.tableView.reloadData()
                                }
                                self.reloadTable()
                            })
                        }
                    })
                }
            }
        } else {
            requestPosts(0, parameters: ["reblog_info" : "true"]) { (response: AnyObject!, error: NSError!) in
                if let e = error {
                    print(e)
                    self.loadingTop = false
                } else {
                    dispatch_async(self.postParseQueue, {
                        let posts = self.postsFromJSON(JSON(response))
                        dispatch_async(dispatch_get_main_queue()) {
                            self.processPosts(posts)
                            
                            dispatch_async(dispatch_get_main_queue(), {
                                self.loadingCompletion = {
                                    self.posts = posts
                                    self.heightCache.removeAll()
                                    self.tableView.reloadData()
                                }
                                self.reloadTable()
                            })
                        }
                    })
                }
            }
        }

                }
            }
            requestPosts(0, parameters: ["since_id" : "\(sinceID)", "reblog_info" : "true"]) { (response: AnyObject!, error: NSError!) in
                if let error = error {
                    dispatch_async(dispatch_get_main_queue()) {
                        self.presentError(error)
                        self.loadingTop = false
                    }
                } else {
                    dispatch_async(self.postParseQueue) {
                        let posts = self.postsFromJSON(JSON(response))
                        dispatch_async(dispatch_get_main_queue()) {
                            self.processPosts(posts)
                            
                            dispatch_async(dispatch_get_main_queue()) {
                                self.loadingCompletion = {
                                    if self.posts.count > 0 {
                                        self.posts = posts + self.posts
