public Tilemap loadMap(String mapFilePath) {
		//TODO refactor this method and optimize
		Tilemap result = new Tilemap();

		MapUtil.parseMapFile(mapFilePath, result);

		NavigableMap<Integer, Tileset> tilesets = result.getTilesets();
		for (Map.Entry<Integer, Tileset> entry : tilesets.entrySet()) {
			Tileset tileset = entry.getValue();

			Texture texture = createTexture(tileset.getFilePath());

			if (texture != null) {
				Sprite sprite = new Sprite(texture, tileset.getWidth() / tileset.getTileWidth(), tileset.getHeight() / tileset.getTileHeight(), 0);
				mapSpriteCache.put(tileset, sprite);
			}
		}

		currentMap = result;
		return result;

	}