         return ceil(height)
     }
 
-    override func configureWithFeed(feed: DiscoveredFeed, layoutCache: FeedCellLayout.Cache, needShowSkill: Bool) {
+    override func configureWithFeed(feed: DiscoveredFeed, layout: FeedCellLayout, needShowSkill: Bool) {
 
-        var _newLayout: FeedCellLayout?
-        super.configureWithFeed(feed, layoutCache: (layout: layoutCache.layout, update: { newLayout in
-            _newLayout = newLayout
-        }), needShowSkill: needShowSkill)
+        super.configureWithFeed(feed, layout: layout, needShowSkill: needShowSkill)
 
         if let attachment = feed.attachment {
             if case let .Audio(audioInfo) = attachment {

                }
            }
        }

        if layoutCache.layout == nil {

            let audioLayout = FeedCellLayout.AudioLayout(voiceContainerViewFrame: voiceContainerView.frame)
            _newLayout?.audioLayout = audioLayout

            if let newLayout = _newLayout {
                layoutCache.update(layout: newLayout)
            }
        }
    }
}


                let timeLengthString = audioInfo.duration.yep_feedAudioTimeLengthString
                voiceContainerView.timeLengthLabel.text = timeLengthString

                let audioLayout = layout.audioLayout!
                voiceContainerView.frame = audioLayout.voiceContainerViewFrame

                if let realm = try? Realm() {

