renamed Shape -> Model to reduce confusion and changed interface, method now returns a Shape