I'm not totally crazy about this class name but I don't have anything better in mind.