private static void _init() throws ReaderException {
		logger.log("##############################################################################################", 1);
		logger.log("The user directory on this machine is: " + System.getProperty("user.dir") + 
				". Provide a relative path from this folder or an absolute path to a different folder.", 1);
		logger.log("##############################################################################################", 1);
		
		// If no path was set
		if (ConfigurationManager.config_file_path == null) {
			// Lets do an educated guess at a default
			logger.log("Setting configuration path to default: " + config_file_path_default, 1);

			ConfigurationManager.config_file_path = config_file_path_default;
		}
		
		// Check if the configuration file exists at the currently set path
		if (!new File(ConfigurationManager.config_file_path).exists()) {
			String file_path = null;
			
			CacheFile cache = new CacheFile(ConfigurationManager.config_search_name.replace(".json", "") + "-" + ConfigurationManager.cache_search_name);
			
			// Check if configuration file path is saved in a cache file
			if (cache.exists()) {
				file_path = cache.read();
			}
			
			if (file_path == null || !new File(file_path).exists()) {
				logger.log("Defined configuration file path does not exist, starting search from: " + ConfigurationManager.root_search_folder 
						+ ". Looking for a file named: " + ConfigurationManager.config_search_name
						+ ". If these parameters are not correct please provide a correct configuration file path"
						+ " or the 'root folder', 'search name', and 'portlet name' to the ConfigurationManager constructor.", 1);
				
				// Search for file in the folder tree
				FolderTreeSearcher searcher = new FolderTreeSearcher();
				file_path = searcher.search(ConfigurationManager.root_search_folder, ConfigurationManager.config_search_name);
				
				logger.log("Found configuration file at: " + file_path, 1);

				// Write the path to a cache file
				cache.write(file_path);
			}
			
			ConfigurationManager.config_file_path = file_path;
		}

		logger.log("Reading from: " + ConfigurationManager.config_file_path, 1);

		// Setting configuration reader and writer
		ConfigurationManager.read = new ConfigurationReader();
		ConfigurationManager.writer = new ConfigurationWriter();
		
		// Setting logging level from configuration file
		try {
			logger.level = read.getIntegerItem("logging", "cm_level");
		} catch (ReaderException e) {
			logger.level = 5;
			
			logger.log("Logging level is not set in configuration will default to lowest threshold.", 1);
		}
		
		logger.log("Configuration manager initialisation done!", 1);
		logger.log("##############################################################################################", 1);
	}