public Dip(int pinCount,int startX, int startY)
    {
       pins = new Pin[pinCount + 1];
       
       //totally untested loop to create pins in this dip
       int pinIndex = 0;
       //distance between pins
       int distanceBtwnPins = 1;
       
       Scheme.tiles[startX-1][startY] = TileType.dLEFTTOPCORNER;
       Scheme.tiles[startX-1][startY+1]=TileType.dVERTICAL;
       Scheme.tiles[startX-1][startY+2]=TileType.dVERTICAL;
       Scheme.tiles[startX-1][startY+3] = TileType.dLEFTBOTCORNER;
       Scheme.tiles[startX][startY+3] = TileType.dHORIZONTAL;
       
       int i=0;
       while (pinIndex!=pinCount/2)
       //for (int i = 0; i < pinCount/2 ; i++)
       {
    	   i++;
           //lower line
    	   x = startX + i;
    	   y = startY + 3;
    	   Scheme.tiles[x][y] = TileType.DOWNPIN;	//should this be moved to Pin's constructor?
    	   pins[ pinIndex ] = new Pin(this,x,y);
    	   pins[ pinIndex ].setType(PinType.DOWN);
    	   pinIndex++;
    	   
    	   for (int j=0;j<distanceBtwnPins;j++)
    	   {
	    	   i++;
	    	   x = startX + i;
	    	   Scheme.tiles[x][y] = TileType.dHORIZONTAL;
       	   }
       }

       Scheme.tiles[x+1][y] = TileType.dRIGHTBOTCORNER;
       Scheme.tiles[x+1][y-1]=TileType.dVERTICAL;
       Scheme.tiles[x+1][y-2]=TileType.dVERTICAL;
       Scheme.tiles[x+1][y-3] = TileType.dRIGHTTOPCORNER;
       Scheme.tiles[x][y-3] = TileType.dHORIZONTAL;
       //this draws pins from right to left for insurance 
       //for (int i = pinCount/2 - 1; i >= 0; i--)
        while (pinIndex!=pinCount)
       {
           i--;
           //higher line
    	   x = startX + i;
    	   y = startY;
    	   Scheme.tiles[x][y] = TileType.UPPIN; //should this be moved to Pin's constructor?
    	   pins[ pinIndex ] = new Pin(this,x,y);
    	   pins[ pinIndex ].setType(PinType.UP);
    	   pinIndex++; 
    	   
    	   for (int j=0;j<distanceBtwnPins;j++){   
    	   i--;
    	   x = startX + i;
    	   Scheme.tiles[x][y] = TileType.dHORIZONTAL;
    	   }
       }
    }