refactoring:
- program options parsing extracted into its own struct
- renaming