ImageOperation refactored