split functionality of main() into several smaller and managable functions
add doctest comments in user_choice_validate()