shift.v works for all functions