by making i dynamic, only make-rectangular need be a multimethod