support for list functions, procedures and set!. Better error messages and more robust identifier checks.