@SuppressWarnings("unchecked")
    public static void load(String path) throws FroshProjectException {
        // Create a Properties object
        //
        configurationData = new Properties();

        // Load the file from the path specified as argument
        //
        try {
            configurationData.loadFromXML(new FileInputStream(path));
        } catch (InvalidPropertiesFormatException e) {
            // Throw a configuration invalid exception
            //
            throw new FroshProjectException(
                    FroshProjectExceptionConfig.INVALID_CONFIG_CODE, e);
        } catch (FileNotFoundException e) {
            // Throw a missing configuration exception
            //
            throw new FroshProjectException(
                    FroshProjectExceptionConfig.MISSING_CONFIG_CODE, e);
        } catch (IOException e) {
            // Throw an IO error exception
            //
            throw new FroshProjectException(
                    FroshProjectExceptionConfig.IO_ERROR_CONFIG_CODE, e);
        }

        // Get the String from the configuration file
        //
        String neighbourhoodConfigString = FroshProjectConfig
                .getProperty("WorldMap.neighbourhood");
        if (neighbourhoodConfigString == null) {
            neighbourhoodConfigString = "-1;0:0;1:0;-1:1;0";
        }

        // Translate it to an array of coordinates
        //
        neighbourhoodCoordinatesArray = new ArrayList<Point>();
        for (String currentCoordinates : neighbourhoodConfigString.split(":")) {
            // Get the coordinates as an array
            //
            String[] coordinatesString = currentCoordinates.split(";");

            // Create the current Point
            //
            neighbourhoodCoordinatesArray.add(new Point(Integer
                    .parseInt(coordinatesString[0]), Integer
                    .parseInt(coordinatesString[1])));
        }

        // Get the path of the world map file
        //
        String worldMapPath = configurationData
                .getProperty("WorldMap.fileName");

        // Make sure its valid
        //
        if (worldMapPath == null) {
            throw new FroshProjectException(
                    FroshProjectExceptionConfig.MAP_PATH_INVALID, null);
        }

        // Load the file
        //
        Map<String, Map<Object, Object>> worldMapTmp = (Map<String, Map<Object, Object>>) DataXML
                .load(worldMapPath, "");

        // Control its existence
        //
        if (worldMapTmp == null || !worldMapTmp.containsKey("mapConfiguration")
                || !worldMapTmp.containsKey("initialDiseases")) {
            throw new FroshProjectException(
                    FroshProjectExceptionConfig.MAP_PATH_INVALID, null);
        }

        // Isolate the initial diseases map
        //
        initialDiseases = worldMapTmp.get("initialDiseases");
        initialDiseasesList = getInitialDiseasesList();

        // Store the map configuration
        //
        worldMap = worldMapTmp.get("mapConfiguration");
    }