                 return
             }
             
-            applyStyle(underlineStyle: style, spanning: range)
+            applyStyle(underlineStyle: style, to: range)
         }
         
         /// Applies the underline style spanning the specified range to the DOM.
         ///
         /// - Parameters:
         ///     - style: the style of the underline.
-        ///     - range: the range the attribute is spanning.
-        ///
-        private func applyStyle(underlineStyle style: NSUnderlineStyle, spanning range: NSRange) {
+        ///     - range: the range the style will be applied to.
+        ///
+        private func applyStyle(underlineStyle style: NSUnderlineStyle, to range: NSRange) {
             
             switch (style) {
             case .StyleSingle:

                    return
                }
                
                strongSelf.applyStyles(from: attrs, spanning: range)
            }
        }
        
        // MARK: - Styles: Synchronization with DOM
        
        private func applyStyles(from attributes: [String : AnyObject], spanning range: NSRange) {
            for (key, value) in attributes {
                switch (key) {
                case NSAttachmentAttributeName:
                    applyStyle(attachmentValue: value, spanning: range)
                case NSFontAttributeName:
                    applyStyle(fontValue: value, spanning: range)
                case NSLinkAttributeName:
                    applyStyle(linkValue: value, spanning: range)
                case NSStrikethroughStyleAttributeName:
                    applyStyle(strikethroughValue: value, spanning: range)
                case NSUnderlineStyleAttributeName:
                    applyStyle(underlineValue: value, spanning: range)
                default:
                    break
                }
            }
        }
        
        /// Applies all styles from the specified attributed string and range to the DOM.
        ///
        /// - Parameters:
        ///     - attributedString: the string to get the attributes form.
        ///     - range: the range from which to take the styles to copy.
        ///
        private func applyStyles(from attributedString: NSAttributedString, spanning range: NSRange) {
            
            let options = NSAttributedStringEnumerationOptions(rawValue: 0)
            let sourceRange = NSRange(location: 0, length: attributedString.length)
            
            attributedString.enumerateAttributesInRange(sourceRange, options: options) { (attributes, sourceSubrange, stop) in
                
                let subrangeWithOffset = NSRange(location: range.location, length: sourceSubrange.length)
                applyStyles(from: attributes, spanning: subrangeWithOffset)
            }
        }
        

        ///
        /// - Parameters:
        ///     - value: the value found in a `NSFontAttributeName` attribute.
        ///     - range: the range the style will be applied to.
        ///
        private func applyStyle(fontValue value: AnyObject, to range: NSRange) {
            
            guard let font = value as? UIFont else {
                assertionFailure("Was expecting a UIFont object as the value for the font attribute.")
                return
            }
            
            applyStyle(font, to: range)
        }
        
        /// Applies the font style spanning the specified range to the DOM.
        ///
        /// - Parameters:
        ///     - font: the font to apply.
        ///     - range: the range the style will be applied to.
        ///
        private func applyStyle(font: UIFont, to range: NSRange) {
            
            let fontTraits = font.fontDescriptor().symbolicTraits
            
