use a new type for local bindings (specialized chained list);
use a new type for a hidden context that just serves for fresh variable names