use macros to remove repetitive code
more verbose prompts
Merge branch 'reduce_code_duplication'