private boolean loadConfig() {
		
		this.configuration.lockWrite();
		
		if(this.configuration.loadConfig() == false) 
			return false;
		
		ConfigurationSection configSection;
		YamlConfiguration config = this.configuration.getConfig();
		
		// World loop 
		Iterator<String> regionIterator = config.getKeys(false).iterator();
		while(regionIterator.hasNext()) {
			String regionName = regionIterator.next();

			// Region 
			configSection = config.getConfigurationSection(regionName);	
			World world = Bukkit.getWorld(configSection.getString("world"));
			Location edge1 = this.configuration.getLocation(regionName+".edge1", world);
			Location edge2 = this.configuration.getLocation(regionName+".edge2", world);
			
			womRegionTeleport regionObj = this.addRegion(regionName, edge1, edge2);
			
			if(configSection.contains("arriveLocation")) {
				Location arriveLocation = this.configuration.getLocation(regionName+".arriveLocation", world);
				regionObj.setArriveLocation(arriveLocation);
			}
		}
		
		// Link regions
		regionIterator = config.getKeys(false).iterator();
		while(regionIterator.hasNext()) {
			String regionName = regionIterator.next();
			configSection = config.getConfigurationSection(regionName);	
			
			// Region link
			if(configSection.contains("linkedRegion")) {
				this.linkRegion(regionName, configSection.getString("linkedRegion"));
			}
			
			// Player linked region
			if(configSection.contains("playerLinkedRegion")) {
				ConfigurationSection playerLinkedRegion = config.getConfigurationSection(regionName+".playerLinkedRegion");
				Iterator <String> playerLinkedRegionIterator = playerLinkedRegion.getKeys(false).iterator();
				
				while(playerLinkedRegionIterator.hasNext()) {
					String playerName = playerLinkedRegionIterator.next();
					this.linkRegionPlayer(regionName, playerLinkedRegion.getString(playerName), playerName);	
				}
			}
			
			// activate teleport region
			if(configSection.getBoolean("enabled")) {		
				this.regionLinkMap.get(regionName).getRegion(regionName).activate();
			}
		}
		
		this.configuration.unlockWrite();
		
		return true;
	}