more flexible checking for number of arguments
add read-only environment to AST traversal parameters
major refactoring: move AST checking into sub-module; realizing that it's not going to be perfect, settle for useful