     return CGSizeMake(width, height)
   }
 
-  override func layout() {
+  override public func layout() {
     let padding = Config.Wall.padding
     var y = padding
 
-    let titleSize = titleNode.calculatedSize
-    titleNode.frame = CGRect(
-      origin: CGPoint(x: padding, y: y),
-      size: titleSize)
+    if let textNode = textNode {
+      let textSize = textNode.calculatedSize
+      textNode.frame = CGRect(
+        origin: CGPoint(x: padding, y: y),
+        size: textSize)
 
-    y += titleSize.height + padding
+      y += textSize.height + padding
+    }
 
-    if Config.Wall.useDivider {
+    if let divider = divider {
       divider.frame = CGRect(x: padding, y: y,
         width: contentWidth, height: Dimensions.dividerHeight)
     }

import UIKit
import AsyncDisplayKit

class PostCellNode: ASCellNode {

  struct Dimensions {
    static let dividerHeight: CGFloat = 1

    return width - 2 * Config.Wall.padding
  }

  var textNode: ASTextNode?

  var divider: ASDisplayNode?

  public init(post: Post, width: CGFloat) {
    self.width = width

    super.init()

    if let text = post.text {
      textNode = ASTextNode()
      textNode!.attributedString = NSAttributedString(string: text,
        attributes: Config.Wall.TextAttributes.postText)
      addSubnode(textNode)
    }

    if Config.Wall.useDivider {
      divider = ASDisplayNode()
      divider!.backgroundColor = .lightGrayColor()
      addSubnode(divider)
    }
  }

  override public func calculateSizeThatFits(constrainedSize: CGSize) -> CGSize {
    var height = Config.Wall.padding * 2

    if let textNode = textNode {
      let textSize = textNode.measure(CGSize(width: contentWidth,
        height: CGFloat(FLT_MAX)))
      height += textSize.height + Config.Wall.padding
    }

    if Config.Wall.useDivider {
      height += Dimensions.dividerHeight
