public static MapGrid GenerateMap(string filePath, int cellWidth, int cellHeight)
        {
            Bitmap image = new Bitmap(filePath);
            int imageHeight = image.Height;
            int imageWidth = image.Width;
            int columnCount = image.Width / cellWidth;
            int rowCount = image.Height / cellHeight;

            MapGrid grid = new MapGrid();
            grid.CellWidth = cellWidth;
            grid.CellHeight = cellHeight;
            grid.ColumnCount = columnCount;
            grid.RowCount = rowCount;

            for (int row = 0; row < rowCount; row++)
            {
                for (int col = 0; col < columnCount; col++)
                {
                    int posX = col * cellWidth;
                    int posY = row * cellHeight;

                    try
                    {
                        Bitmap cellImage = new Bitmap(cellWidth, cellHeight,image.PixelFormat);
                        if ((row != (rowCount - 1)) && (col != (columnCount - 1)))
                        {
                            // loop down a row
                            for(int i =0; i < cellHeight; i++)
                            {
                                for(int j=0; j < cellWidth; j++)
                                {
                                    var pixelColor = image.GetPixel(posX + j, posY + i);
                                    cellImage.SetPixel(j, i, pixelColor);
                                }
                            }

                        }
                        else
                        {
                            int cellEdgeHeight = cellHeight;
                            int cellEdgeWidth = cellWidth;

                            if (row == (rowCount - 1))
                            {
                                cellEdgeHeight = imageHeight - (row * cellHeight);
                            }

                            if (col == (columnCount - 1))
                            {
                                cellEdgeWidth = imageWidth - (col * cellWidth);
                            }
                        }
                        var cellAverage = ImageLibraryGenerator.GetAverageColorFromBitmap(cellImage);
                        grid.AddCell(new MapCell(posX, posY, cellAverage.ToString(), cellAverage));
                    }
                    catch (Exception e)
                    {
                        throw new Exception(e.Message);
                    }
                }
            }

            return grid;
        }