refactor all_except_option