         return nil
     }
     
-    func highlightedTextColorForTextColor(textColor: UIColor) -> UIColor {
+    private func highlightedTextColorForTextColor(textColor: UIColor) -> UIColor {
         return textColor.colorWithAlphaComponent(0.5)
     }
-}+}

        self.userInteractionEnabled = true

        // Establish the text store with our current text
        updateTextStoreWithText()
    }
    
    func updateTextStoreWithText() {
        var mutableAttributedString: NSMutableAttributedString?
        
        if text != nil {
            mutableAttributedString = NSMutableAttributedString(string: text!, attributes: attributesFromProperties())
        }
        
        if mutableAttributedString != nil {
            
            // Get link ranges
            linkRangeResults = getRangesForLinksInAttributedString(mutableAttributedString!)
            
            // Set attributedText
            attributedText = mutableAttributedString
            
            // Set the string on the storage
            textStorage?.setAttributedString(mutableAttributedString)
            
            // Addd attributes to link ranges
            if let linkRangeResults = linkRangeResults {
                addLinkAttributesToAttributedStringWithLinkRangeResults(linkRangeResults)
            }
        }
    }
    
    // Returns array of ranges for all special words, user handles, hashtags and urls
    func getRangesForLinksInAttributedString(attributedString: NSAttributedString) -> [LinkRangeResult] {
        var rangesForLinks = [LinkRangeResult]()

        if linkDetectionTypes & .UserHandle {
            rangesForLinks += getRangesForUserHandles(attributedString.string)
        }

        if linkDetectionTypes & .Hashtag {
            rangesForLinks += getRangesForHashtags(attributedString.string)
        }

        if linkDetectionTypes & .URL {
            rangesForLinks += getRangesForURLs(attributedString)
        }

        return rangesForLinks
    }

    func getRangesForUserHandles(text: String) -> [LinkRangeResult] {
        let rangesForUserHandles = getRangesForLinkType(LinkDetectionType.UserHandle, regexPattern: "(?<!\\w)@([\\w\\_]+)?", text: text)
        return rangesForUserHandles
    }

    func getRangesForHashtags(text: String) -> [LinkRangeResult] {
        let rangesForHashtags = getRangesForLinkType(LinkDetectionType.Hashtag, regexPattern: "(?<!\\w)#([\\w\\_]+)?", text: text)
        return rangesForHashtags
    }

    func getRangesForLinkType(linkType: LinkDetectionType, regexPattern: String, text: String) -> [LinkRangeResult] {
        var rangesForLinkType = [LinkRangeResult]()

        // Setup a regular expression for user handles and hashtags

        return _textStorage
        }()
    
    
    // MARK: Properties override

    public override var frame: CGRect {
        didSet {
            textContainer.size = CGSizeMake(CGRectGetWidth(self.bounds), CGFloat.max)
        }
    }

    public override var bounds: CGRect {
        didSet {
            textContainer.size = CGSizeMake(CGRectGetWidth(self.bounds), CGFloat.max)
        }
    }
    
    public override var numberOfLines: Int {
        didSet {
            textContainer.maximumNumberOfLines = numberOfLines
        }
    }
    
    public override var text: String! {
        didSet {
            setContextLabelDataWithText(text)
        }
    }
    
    
    // MARK : Initializations
    
    public required init(coder: NSCoder) {
        super.init(coder: coder)
        setupTextSystem()
    }

    public override init(frame: CGRect) {
        super.init(frame: frame)
        setupTextSystem()
    }

    public override convenience init() {
        self.init(frame:CGRectZero)
    }
    
    public convenience init(with userHandleTextColor: UIColor, hashtagTextColor: UIColor, linkTextColor: UIColor) {
        self.init(frame:CGRectZero)
        
        self.userHandleTextColor = userHandleTextColor
