     ///
     /// - Returns: True if ParagraphAttributes were removed. False otherwise!
     ///
-    func ensureRemovalOfParagraphAttributes(insertedText text: String, at range: NSRange) -> Bool {
+    private func ensureRemovalOfParagraphAttributes(insertedText text: String, at range: NSRange) -> Bool {
 
         guard shouldRemoveParagraphAttributes(insertedText: text, at: range.location) else {
             return false
         }
 
-        let formatters:[AttributeFormatter] = [
+        let formatters: [AttributeFormatter] = [
             TextListFormatter(style: .ordered),
             TextListFormatter(style: .unordered),
-            BlockquoteFormatter()
+            BlockquoteFormatter(),
+            PreFormatter()
         ]
 
         let atEdgeOfDocument = range.location >= storage.length

    // MARK: - Overwritten Properties
    
    /// Overwrites Typing Attributes:
    /// This is the (only) valid hook we've found, in order to (selectively) remove the Blockquote/List attributes.
    /// For details, see: https://github.com/wordpress-mobile/AztecEditor-iOS/issues/414
    ///
    override open var typingAttributes: [String: Any] {
        get {
            let updatedAttributes = ensureRemovalOfListAndBlockquoteAttribute(from: super.typingAttributes)
            super.typingAttributes = updatedAttributes

            return updatedAttributes

    ///
    ///     A. The selected location is at the very end of the document
    ///     B. The previous character is a '\n'
    ///     C. There's a List (OR) Blockquote (OR) Pre.
    ///
    /// This is necessary because when the caret is at EOF, and the previous `\n` character has
    /// a [List, Blockquote, Pre] styles, that style will remain in the `typingAttributes`.  We'll only
    /// allow the style to remain if there are contents in the current line with the textList style
    /// (in which case this condition won't ever trigger because we'll either no longer be at EOF, 
    /// or the previous character won't be `\n`).
