move some broken lisp-level stuff back into haskell