 
 
     // MARK: - Getting format identifiers
-
+    
+    private let formatterIdentifiersMap: [FormattingIdentifier: AttributeFormatter] = [
+        .bold: BoldFormatter(),
+        .italic: ItalicFormatter(),
+        .underline: UnderlineFormatter(),
+        .strikethrough: StrikethroughFormatter(),
+        .link: LinkFormatter(),
+        .orderedlist: TextListFormatter(style: .ordered),
+        .unorderedlist: TextListFormatter(style: .unordered),
+        .blockquote: BlockquoteFormatter()
+    ]
 
     /// Get a list of format identifiers spanning the specified range as a String array.
     ///


        var identifiers = [FormattingIdentifier]()

        if boldFormattingSpansRange(range) {
            identifiers.append(.bold)
        }

        if italicFormattingSpansRange(range) {
            identifiers.append(.italic)
        }

        if underlineFormattingSpansRange(range) {
            identifiers.append(.underline)
        }

        if strikethroughFormattingSpansRange(range) {
            identifiers.append(.strikethrough)
        }

        if linkFormattingSpansRange(range) {
            identifiers.append(.link)
        }

        if orderedListFormattingSpansRange(range) {
            identifiers.append(.orderedlist)
        }

        if unorderedListFormattingSpansRange(range) {
            identifiers.append(.unorderedlist)
        }

        if blockquoteFormattingSpansRange(range) {
            identifiers.append(.blockquote)
        }

        return identifiers

        return textStorage.attribute(NSAttachmentAttributeName, at: index, effectiveRange: nil) as? TextAttachment
    }

    // MARK: - Links

    /// Returns an NSURL if the specified range as attached a link attribute
    ///
