Improved naming and reused langauge constructs from Esprima.