Add ProjectContext interface and refactor CommandLineHandler interface