refactor *Operations