UnaryOp refactored