can't have EXTRA trailing newlines either
added optional arguments to (compile) in preparation for compile-time environment, and also anywhere (compile) might be invoked... hopefully without breaking any existing code