Organized top level code into seperate "domain" and "cli" namespaces. CLI depends on Domain; Domain is clueless of CLI.
simplified top level requires