Refactored all evaluation to be lazy, so all functions get environment pointers now.