     ;;      (error "Boomerang produced non-empty output!"))
     ;; if no errors, check for empty view 
     (if (not (file-exists-p view))
-        (error "Boomerang did not create %s" view)
-    ;;  if no errors, and view exists, freshen buffers
-    (progn
-      (refresh source sourcebuf)
-      (refresh view viewbuf)
-      (switch-to-buffer sourcebuf)
-      (add-hook 'local-write-file-hooks
-         (lambda () (boomison-sync lens archive source sourcebuf view viewbuf)))
-      (switch-to-buffer-other-window viewbuf)
-      (add-hook 'local-write-file-hooks
-         (lambda () (boomison-sync lens archive source sourcebuf view viewbuf)))
+      (error "Boomerang did not create %s" view)
+      ;;  if no errors, and view exists, freshen buffers
+      (progn
+        (refresh source sourcebuf)
+        (switch-to-buffer sourcebuf)
+        (add-hook 'local-write-file-hooks
+                  (lambda () (boomison-sync t lens archive source sourcebuf view viewbuf)))
+        (refresh view viewbuf)
+        (switch-to-buffer-other-window viewbuf)
+        (add-hook 'local-write-file-hooks
+                  (lambda () (boomison-sync t lens archive source sourcebuf view viewbuf)))
       (message "Created %s from %s." view source)
       ))))
+  
;; import Common Lisp package
(require 'cl)

(defun refresh (f fbuf)
  "Refresh FILENAME"
  (save-window-excursion 
    (switch-to-buffer fbuf) 
    (erase-buffer)
    (insert-file-contents f)))

(defun boomison (source view lens)
  "Create a view of FILENAME using L"
  (interactive "FSource: \nFView: \nsLens: ")
  (lexical-let* 
      ((archive (make-temp-name source))
       (sourcebuf (find-file-noselect source))
       (viewbuf (find-file-noselect view)))
    (message "Mapping %s to %s wrt %s" source view (make-temp-name source))
    (boomison-sync lens archive source sourcebuf view viewbuf)))

(defun boomison-sync (lens archive source sourcebuf view viewbuf)
  (message "BOOMISON-SYNC %s %s %s %s" lens archive source view)
  (lexical-let* 
      ((lens lens)
       (archive archive)
       (source source)
       (sourcebuf sourcebuf)

       (errbuf (get-buffer-create "*boomerang output*")))
    (message "boomcmd: %s" boomcmd)
    ;; save source and view
    (if (eq savefiles 't)
        (progn
          (save-window-excursion
            (switch-to-buffer sourcebuf)
            (write-region (point-min) (point-max) source nil t nil))
          (save-window-excursion
            (switch-to-buffer viewbuf)
            (write-region (point-min) (point-max) view nil t nil))))
    ;; clear error buffer
    (save-window-excursion 
      (switch-to-buffer errbuf) 
