public Sprite getSprite(String ref) {
		//Check for already existing sprite
		if (sprites.get(ref) != null) {
			return (Sprite) sprites.get(ref);
		}
		
		//Get new sprite
		BufferedImage sourceImage = null;
		
		try {
			URL url = this.getClass().getClassLoader().getResource(ref);
			if (url == null){
				fail("Can't Find Ref:"+ref);
			}
			sourceImage = ImageIO.read(url);
		} catch (IOException e) {
			fail("Failed to load: "+ref);
		}
		
		GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
		Image image = gc.createCompatibleImage(sourceImage.getWidth(),sourceImage.getHeight(),Transparency.BITMASK);
		
		image.getGraphics().drawImage(sourceImage, 0, 0, null);
		
		Sprite sprite = new Sprite(image);
		sprites.put(ref, sprite);
		return sprite;
	}