change the signature of ShapeList.__init__
implement projection and segment shapes