public void initilize(){
		//This sets h and w to be a square based on the smaller value
		if (h != w){
			if (h > w)
				h = w;
			else if (h < w)
				w = h;
		}

		//Initialize the layer images so they are retrieved once (not for every cell)
		Grid grid = request.operator.getGrid();
		rocksMGS = new Image[grid.getNumLayers()];
		for(int i = 0; i < grid.getNumLayers(); i++){
			try {
				System.out.printf("grid: %h\n", grid);
				System.out.printf("getRockArray: %h\n", grid.getRockArray()[0]);
				System.out.printf("imagePath: %h\n", grid.getRockArray()[0].imagePath());
				rocksMGS[i] = ImageIO.read(getClass().getResource(grid.getRockArray()[i].imagePath()));
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		drawRocks = false;
		
		

		//this sets square size 30 is the buffer times 2 (15*2)
		squareSize = h/s;//(h - 30)/s;

		//set minimum square size
		if(squareSize < minSize) {
			squareSize = minSize;
			h = w = squareSize * s;
		}

		setSize(w+60,h+60);
		setLayout(null);
		setPreferredSize(new Dimension(w+30, h+30));

		//set the arrays for the clickable part
		xMinCords = new int[s+1];
		yMinCords = new int[s+1];

		//Canvas is important to clickable
		setOpaque(true);
		addMouseListener(this);
		addMouseMotionListener(this);
		
	}