attempt to clean up shift_right