refactoring op_clone