hmmm - something about this seems like we could improve. OK for now, but seems to me we should have a concept of AssignmentClient types that can register themselves, and that's how we know how to create them.