data structure is used, but a much saner matching mechanism is used, one which allows greater ease in adding new types.
Jonathan Stone and myself. Many thanks to Matt Thomas for providing the information necessary to implement this interface, and for helping to shake out the bugs.