move function call logic into env
make booleans/conditions first-class values (mostly a grammar change)
support a null ("none") value