added is_valid_option, method with appropriate refactoring and add_contribution_method