The point here is to allow the user to hook into a lower level API, and simplify it overall. The main focus of the refactorings required to make this possible were focused on removing behavior based on symbols and replacing it with objects. I think that using symbols for the API to specify the type instead of an object seriously undermines that. I know @tenderlove and I spoke briefly about this as well. Thoughts?