     }
 }
 
-func createIssueTitleString(
-    issue: IssueQuery.Data.Repository.Issue,
-    width: CGFloat
-    ) -> NSAttributedStringSizing {
+func titleStringSizing(title: String, width: CGFloat) -> NSAttributedStringSizing {
     let attributedString = NSAttributedString(
-        string: issue.title,
+        string: title,
         attributes: [
             NSFontAttributeName: Styles.Fonts.headline,
             NSForegroundColorAttributeName: Styles.Colors.Gray.dark

    return IssueCommentReactionViewModel(models: models)
}

func createIssueRootCommentModel(
    issue: IssueQuery.Data.Repository.Issue,
    width: CGFloat
    ) -> IssueCommentModel? {
    let commentFields = issue.fragments.commentFields

    guard let author = commentFields.author,
        let date = GithubAPIDateFormatter().date(from: commentFields.createdAt),
        let avatarURL = URL(string: author.avatarUrl)
        else { return nil }

    let details = IssueCommentDetailsViewModel(date: date, login: author.login, avatarURL: avatarURL)
    let bodies = createCommentModels(body: issue.fragments.commentFields.body, width: width)
    let reactions = createIssueReactions(reactions: issue.fragments.reactionFields)
    let collapse = IssueCollapsedBodies(bodies: bodies)
    return IssueCommentModel(
        number: issue.number,
        details: details,
        bodyModels: bodies,
        reactions: reactions,

    width: CGFloat
    ) -> [IGListDiffable] {
    var result = [IGListDiffable]()
    result.append(titleStringSizing(title: issue.title, width: width))

    let labels = issue.fragments.labelableFields.issueLabelModels
    result.append(IssueLabelsModel(labels: labels))

    if let root = createCommentModel(
        number: issue.number,
        commentFields: issue.fragments.commentFields,
        reactionFields: issue.fragments.reactionFields,
        width: width
        ) {
        result.append(root)
    }

