refactored + bytecode