Breaking out program into setup interface, command line interface, and shared DLLs.