Implemented a grid generator instead of having grid model handle grid generation
Added more unit tests, all work except immutable