simplified the walker, introduced enter/leave callbacks, add stack.js so that we can create a scope stack in the example