private Texture createTexture(String texturePath) {
		Texture result = null;

		try {
			if (textureCache.containsKey(texturePath))
				result = textureCache.get(texturePath);
			else {
				result = new Texture(texturePath);
				textureCache.put(texturePath, result);

				if (LOGGER.isDebugEnabled() && result != null)
					LOGGER.debug("Successfully created texture: " + result);
			}

			// increase texture counter each time it is used
			// if the counter == 0 then we can release the texture's resources
			result.setCounter(result.getCounter() + 1);
			if (LOGGER.isDebugEnabled() && result != null)
				LOGGER.debug("Texture '" + texturePath + "' is used '" + result.getCounter() + "' time(s)");
		} catch (Exception e) {
			LOGGER.fatal("Couldn't create texture of filepath: '" + texturePath + "'. Maybe the internal graphics were not initialized yet.", e);
			result = null;
		}

		return result;
	}