I like this approach, but we might want to have it raise something more useful than a generic assertion error