refactoring op.h