@Override
	public GameGraphic getObject(String name, Map<String, String> data) {
		// If a cache of this object already exists, return it
		if (cache.containsKey(name)) {
			return cache.get(name);
		}

		// Create a the new object and cache it We make a call to the asset
		// manager to get the buffered image we need. It is a good idea to do
		// this as it allows for the BufferedImage factory to cache the image,
		// potentially for a <b>different</b> factory. For instance a
		// circumstance may arise when two factories make use of the same
		// buffered image, so it's best to cache it at this point
		BufferedImage rawGraphic = GameAssetManager.getInstance().getObject(BufferedImage.class, name);
		GameGraphic gameGraphic = new GameGraphic(name, rawGraphic);
		cache.put(name, gameGraphic); // cache it

		return gameGraphic;
	}