add closure & lexical scope