         clearButton.addTarget(self, action: Selector("clearButtonTapped:"), forControlEvents: .TouchUpInside)
     }
     
+    private func configureGestures() {
+        configureOpacityGesture()
+        configureCloseGesture()
+    }
+    
     private func configureOpacityGesture() {
         opacityGesture.addTarget(self, action: "opacityGestureRecognized:")
         toolbar.addGestureRecognizer(opacityGesture)

        let textOpacity = max(0.3, opacity)
        settings.textOpacity = textOpacity
        
        let toolbarOpacity = min(0.7, opacity * 1.5)
        toolbar.backgroundColor = settings.consoleBackColor.colorWithAlphaComponent(toolbarOpacity)
        
        let toolbarBorderOpacity = toolbarOpacity / 2
        toolbar.layer.borderColor = settings.consoleBackColor.colorWithAlphaComponent(toolbarBorderOpacity).CGColor
        toolbar.layer.borderWidth = 1.0
        
        if !lines.isEmpty {

        }
    }
    
    private var filteredLines: [AELogLine] {
        guard let filter = filterText else { return lines }
        let filtered = lines.filter({ $0.description.containsString(filter) })
        return filtered
    }
    
    private var filterText: String? {
        didSet {
            if let text = filterText {
                let characterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()
                let emptyText = text.stringByTrimmingCharactersInSet(characterSet) == ""
                if !emptyText {
                    filterActive = true
                }
            } else {
                filterActive = false
            }
        }
    }
    
    private var filterActive = false {
        didSet {
            updateUI()
        }
    }
    
    private func updateUI() {
        tableView.reloadData()
        updateContentLayout()
        if autoFollow {
            scrollToBottom()
        }
