removed opcode argument as now it seems redundant