further separated the CLI from the library part, the CLI class should only handle UI tasks, everything else (including OS identification) is done by the library module