add shift_and & shift_or