need to pass opcode by pointer