         }
     }
 
-// MARK: Private
+}
 
-    private func processJob(job: CellJob) {
+private extension ProfileHeaderCellSizeCalculator {
+
+    func processJob(job: CellJob) {
+
         self.completion = {
             if self.cellJobs.count > 0 {
                 self.cellJobs.removeAtIndex(0)

        }
        self.cellItems = job.cellItems
        self.maxWidth = job.width
        self.webView.frame = self.webView.frame.withWidth(job.width - (StreamTextCellPresenter.postMargin * 2))
        loadNext()
    }

    private func loadNext() {
        if let item = cellItems.safeValue(0) {
            if let user = item.jsonable as? User {
                let html = StreamTextCellHTML.postHTML(user.headerHTMLContent)
                label.setLabelText(user.name)

                // needs to use the same width as the post text region
                webView.loadHTMLString(html, baseURL: NSURL(string: "/"))
            }
            else {
                label.attributedText = nil
                assignCellHeight(0)
            }
        }

///  ProfileHeaderCellSizeCalculator.swift
//

import FutureKit


public class ProfileHeaderCellSizeCalculator: NSObject {
    static let ratio: CGFloat = 16 / 9
    let webView: UIWebView

    private var maxWidth: CGFloat = 0.0
    private typealias CellJob = (cellItems: [StreamCellItem], width: CGFloat, columnCount: Int, completion: ElloEmptyCompletion)
    private var cellJobs: [CellJob] = []
