use setfenv so we can catch undeclared variables