 	}
 	
 	override func sizeThatFits(_ size: CGSize) -> CGSize {
-		let layout = updatedLayout()
-		return CGSize(width: bounds.width, height: layout.height)
+		if layout == nil {
+			layout = updatedLayout()
+		}
+		return CGSize(width: bounds.width, height: layout!.height)
 	}
 
 	override func layoutSubviews() {
 		
 		super.layoutSubviews()
 		
-		let layout = updatedLayout()
-		
-		unreadIndicatorView.setFrameIfNotEqual(layout.unreadIndicatorRect)
-		starView.setFrameIfNotEqual(layout.starRect)
-		avatarImageView.setFrameIfNotEqual(layout.avatarImageRect)
-		setFrame(for: titleView, rect: layout.titleRect)
-		setFrame(for: summaryView, rect: layout.summaryRect)
-		feedNameView.setFrameIfNotEqual(layout.feedNameRect)
-		dateView.setFrameIfNotEqual(layout.dateRect)
-
-		separatorInset = layout.separatorInsets
+		if layout == nil {
+			layout = updatedLayout()
+		}
+
+		unreadIndicatorView.setFrameIfNotEqual(layout!.unreadIndicatorRect)
+		starView.setFrameIfNotEqual(layout!.starRect)
+		avatarImageView.setFrameIfNotEqual(layout!.avatarImageRect)
+		setFrame(for: titleView, rect: layout!.titleRect)
+		setFrame(for: summaryView, rect: layout!.summaryRect)
+		feedNameView.setFrameIfNotEqual(layout!.feedNameRect)
+		dateView.setFrameIfNotEqual(layout!.dateRect)
+
+		separatorInset = layout!.separatorInsets
 		
 	}
 	

	}
	
	func updateSubviews() {
		updateTitleView()
		updateSummaryView()
		updateDateView()

	private let dateView = MasterTimelineTableViewCell.singleLineUILabel()
	private let feedNameView = MasterTimelineTableViewCell.singleLineUILabel()
	
	private var layout: MasterTimelineCellLayout?
	
	private lazy var avatarImageView: UIImageView = {
		let imageView = NonIntrinsicImageView(image: AppAssets.feedImage)
		imageView.contentMode = .scaleAspectFit
