     // MARK: - Table View
 
     override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
-        return 1
+        return 2
     }
 
     override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        if section == 0 {
+            return submission != nil ? 1 : 0
+        }
         return comments.count
     }
 
     override func tableView(tableView: UITableView,
                             cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
+        if indexPath.section == 0 {
+            return submissionCell(tableView, indexPath: indexPath)
+        }
+        return commentCell(tableView, indexPath: indexPath)
+    }
+
+    override func tableView(tableView: UITableView,
+    		didSelectRowAtIndexPath indexPath: NSIndexPath) {
         let comment = comments[indexPath.row]
-
+        if let textComment = comment as? TextComment {
+            if textComment.hidden {
+                expandComment(textComment, index: indexPath.row)
+            } else {
+                collapseComment(textComment, index: indexPath.row)
+            }
+        } else {
+            loadMoreComments(comment as! MoreComment, index: indexPath.row)
+        }
+    }
+    
+    private func submissionCell(tableView: UITableView, indexPath: NSIndexPath) -> UITableViewCell {
+        let cell: SubmissionCellView
+        if let previewImage = submission.getPreviewImage() {
+            cell = tableView.dequeueReusableCellWithIdentifier("SubmissionImageCellView",
+           			forIndexPath: indexPath) as! SubmissionImageCellView
+            Alamofire.request(.GET, previewImage).responseImage { response in
+                (cell as! SubmissionImageCellView).contentImage.image = response.result.value
+            }
+        } else {
+            cell = tableView.dequeueReusableCellWithIdentifier("SubmissionCellView",
+					forIndexPath: indexPath) as! SubmissionCellView
+        }
+        
+        cell.title.text = submission.title.decodeHTML()
+        cell.authorAndPoints.text = "\(submission.author) \(submission.score) " +
+            "\(submission.score == 1 ? "point" : "points")"
+        cell.subreddit.text = submission.subreddit.lowercaseString
+        cell.relativeDate.text = NSDate(timeIntervalSince1970: Double(submission.createdUTC))
+            .timeAgo()
+        cell.comments.text = "\(submission.numComments) " +
+            "\(submission.numComments == 1 ? "comment" : "comments")"
+        cell.domain.text = submission.domain
+        return cell
+    }
+    
+    private func commentCell(tableView: UITableView, indexPath: NSIndexPath) -> UITableViewCell {
+        let comment = comments[indexPath.row]
+        
         var cell: CommentCellView
-
+        
         if let textComment = comment as? TextComment {
             let textCommentCell = tableView.dequeueReusableCellWithIdentifier("TextCommentCellView")
                 as! TextCommentCellView

//

import UIKit

class CommentViewController: UITableViewController, UIViewControllerPreviewingDelegate,
		BodyLabelDelegate {

    var submission: Submission! {
        didSet {

        tableView.estimatedRowHeight = 140
        tableView.separatorStyle = .None

        
        tableView.registerClass(SubmissionCellView.self,
                                forCellReuseIdentifier: "SubmissionCellView")
        tableView.registerClass(SubmissionImageCellView.self,
                                forCellReuseIdentifier: "SubmissionImageCellView")
        tableView.registerClass(TextCommentCellView.self,
                                forCellReuseIdentifier: "TextCommentCellView")
        tableView.registerClass(MoreCommentCellView.self,
