operation class refactored