 
   // MARK: - Public Methods
 
-  public func postAtIndex(index: Int) -> Postable? {
+  public func postAtIndex(index: Int) -> PostConvertible? {
     return posts[index]
   }
 }

    return layout
    }()

  public var posts: [Postable] = [] {
    willSet {
      dispatch_async(dispatch_get_main_queue(), { _ in
        self.collectionView.reloadData()
      })
    }
  }

  // MARK: - Initialization

  public convenience init(post: Postable) {
    self.init()

    self.post = post
  }

  // MARK: - View Lifecycle

    case Triggered, Loading, Stopped
  }

  public var config = Config()
  public var tapDelegate: WallTapDelegate?
  public var scrollDelegate: WallScrollDelegate?

  var post: Post?
  private var scrollingState: InfiniteScrolling = .Stopped

  public var posts: [PostConvertible] = [] {
    willSet {
      dispatch_async(dispatch_get_main_queue(), { _ in
        self.collectionView.reloadData()
      })
    }
  }

  public lazy var collectionView: ASCollectionView = { [unowned self] in
    var frame = self.view.bounds
