Huge commit. Lots of refactoring and beefing up interactive configuration

Signed-off-by: Oren Leiman <oleiman@neutral.io>