reduce operations