             let character = self[position]
             switch character {
             case "<":
-                guard let (tag, range) = parseTagStart(after: position) else {
+                guard let (tag, range) = parseTag(after: position) else {
                     break parser
                 }
 
                 switch tag {
-                case let .open(.some(innerTag)):
+                case let .open(innerTag?):
                     if innerTag == .paragraph {
                         if range.lowerBound == startIndex {
                             balancedStartParagraphTag = true

                        }
                    }
                    push(tag: innerTag)
                case let .close(.some(innerTag)):
                    pop(tag: innerTag)
                    if innerTag == .paragraph && range.upperBound < index(before: endIndex) {
                        result.append("\n\n")

        return FormattedString(text: result, formatting: points)
    }

    private func parseTag(after tagStart: Index) -> (Tag, Range<Index>)? {
        let next = index(after: tagStart)
        guard next < endIndex else {
            return .none
