same logic for all options