added different choose_modes