     }
 
     func fillIn(field:String, with:String, completion: ((String) -> Void)) {
-        println("fill in value")
-        run("document.getElementById('\(field)').value = \"\(with)\";") { (result) in
+        var printValue = with
+        if (field as NSString).containsString("pwd") { printValue = "[redacted]" }
+        println("fill in value \(printValue)")
+        
+        run("document.getElementById('\(field)').value = \"\(with)\";") { result in
             completion(result)
         }
     }
 
     func click(field:String, completion: ((String) -> Void)) {
-        println("click")
+        println("click \(field)")
         run("document.getElementById('\(field)').click();") { (result) in
             completion(result)
             

    }
    
    func webView(webView: WKWebView, didCommitNavigation navigation: WKNavigation!) {
        delegate?.webViewDriverProgress(true)
    }
    
    func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
        var url = webView.URL!.absoluteString! as NSString
        delegate?.webViewDriverProgress(false)
        pageLoaded(url as! String)

    func labelFor(element:String, completion: ((String) -> Void)) {
        let js = "var answer; var mem = document.getElementById('\(element)'); if (mem) { answer = mem.parentElement.children[0].textContent }; mem && answer || 'null'"
        
        run(js) { result in
            if result != "null" {
                println("read label \(result)")
                completion(result)
