@Override
	public void draw(Graphics2D graphics2d) {
		
		//graphics2d.drawImage(sprite.getImage(), bounds.x, bounds.y, bounds.width, bounds.height, null);
		
		if(sprite.getImage() != null) { // if there is an image to draw, draw it
			for(int row = 0;row<Util.IMAGE_SIZE;row+=Util.GRID_SECTIONS) {
				for(int col = 0;col<Util.IMAGE_SIZE;col+=Util.GRID_SECTIONS) {
					
					int rowIndex = row/Util.GRID_SECTIONS;
					int colIndex = col/Util.GRID_SECTIONS;

					graphics2d.drawImage(sprite.getImage(), col, row, col+Util.GRID_SECTIONS, row+Util.GRID_SECTIONS,  //draw the background content
							levelLayout[rowIndex][colIndex].x, levelLayout[rowIndex][colIndex].y,
							levelLayout[rowIndex][colIndex].x+Util.GRID_SECTIONS, levelLayout[rowIndex][colIndex].y+Util.GRID_SECTIONS, null);
					

					if(levelObjects[rowIndex][colIndex] != null) { //if there is a level Object there, draw it
						graphics2d.drawImage(sprite.getImage(), col, row, col+Util.GRID_SECTIONS, row+Util.GRID_SECTIONS, 
								levelObjects[rowIndex][colIndex].x, levelObjects[rowIndex][colIndex].y,
								levelObjects[rowIndex][colIndex].x+Util.GRID_SECTIONS, levelObjects[rowIndex][colIndex].y+Util.GRID_SECTIONS, null);
					}
					
				}
			}
		}
		
		for(ExitDirection direction : exits.keySet()) { 
			SerializableBufferedImage img = exitImages.get(direction);
			Rectangle bounds = exitBounds.get(direction);
			
			graphics2d.drawImage(img.getImage(), bounds.x, bounds.y, bounds.width, bounds.height, null);
		}
	}