                                     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
+                if let error = error {
+                    dispatch_async(dispatch_get_main_queue()) {
+                        self.presentError(error)
+                        self.loadingTop = 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 = {
                                     self.posts = posts
                                     self.heightCache.removeAll()
                                     self.tableView.reloadData()
                                 }
                                 self.reloadTable()
-                            })
+                            }
                         }
-                    })
+                    }
                 }
             }
         }

            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
                    } 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 = {
                                        let indexSet = NSMutableIndexSet()
                                        for row in self.posts.count..<(self.posts.count + posts.count) {

                }
            }
            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
