adds closures, lexical scope and the module pattern