refactored evaluate() for lisp-style evaluation, broke dependency between builder and op table