     private let opacityGesture = UIPanGestureRecognizer()
     private let closeGesture = UITapGestureRecognizer()
     
+    // MARK: - API
+    
+    func addLogLine(logLine: AELogLine) {
+        let calculatedLineWidth = widthForLine(logLine.description)
+        if calculatedLineWidth > maxLineWidth {
+            maxLineWidth = calculatedLineWidth
+        }
+        
+        if filterActive {
+            guard let filter = filterText else { return }
+            if logLine.description.containsString(filter) {
+                filteredLines.append(logLine)
+            }
+        }
+        
+        lines.append(logLine)
+    }
+    
     // MARK: - Properties
     
     private let settings = AELogSettings.sharedInstance

        return maxOpacity
    }
    
    private func toggleControls() {
        let controlsVisible = controlsActive
        

    
    func clearButtonTapped(sender: UIButton) {
        lines.removeAll()
    }
    
    func exportButtonTapped(sender: UIButton) {
