docstring?
why have we got *shape* and *geometry_factory*?