operation doesn't need to be dirty