Bunch of changes as result of code review to add more variations and fix some issues with architecture - NOTE: slightly broke w.r.t. command-line options