Don't use closures, and just save the procedure text; when applying a procedure, use the current environment to evaluate its body.
What changes had to be made to the interpreter to implement dynamic scoping?