refactor into multiple classes, start codegen
remove usage of topSymbolTable, replace with singleton