Use an enum for geometry types, plus changes to subclass init methods.