completed ShapeGenerator