public Grid2d <ICell> BuildCellularGrid() { //create the grid cellularGrid = CreateCellularGrid(); //add cells to the grid: PopulateGrid(); //initialize cell state: ICAConfig initialConfiguration = GetInitialConfiguration(); if (initialConfiguration != null) { foreach (ICell cell in cellularGrid.GetObjects()) { cell.SetState(initialConfiguration.GetCellState(cell)); } } //build neighborhoods: foreach (ICell cell in cellularGrid.GetObjects()) { ((ICell)cell).SetNeighbors(GetNeighborhoodStrategy().BuildNeighborhood(cell)); } //return the grid return(cellularGrid); }