Refactored a bunch of code, let form (not let*) bindings are now properly evaluated and substituted.