public Configuration start(String[] args) {
		try {
			// Load and validate properties
			System.out.println(" -- Loading and validating configuration");
			Configuration config = loadAndValidateProperties();
			
			if (config.inputDir == null || config.inputDir.trim().length() == 0) {
				System.out.println(" -- No configuration found, using defaults and command line parameters");
			} else {
				System.out.println(" -- Configuration loaded and validated");
			}
			
			// Load command line arguments
			loadCommandLineArgs(args, config);
			
			// Make sure we have at least an input dir
			if (config.inputDir == null) {
				return null;
			}
			if (config.faultyFileCopyDir == null || config.faultyFileCopyDir.trim().length() == 0) {
				System.out.println("No output directory has been configured or specified, faulty files will not be copied");
			}
		
			return config;
		} catch (Exception e) {
			logManager.logGeneral(e.getMessage());
			logManager.logGeneral("Program exiting");
			
			System.err.println(e.getMessage());
			System.err.println("Program exiting");
		} 
		
		return null;
	}