extracted obj to handle output formatting
extracted assembler to handle bytecode creation