generalize symmetric operations