Introduce OpCodeFactory and OpCodeCommand objects