add modification operators refactor