Well, this is separation von concerns. Theses two components have one reason to change. We might want to change the representation of a named description, so that we don't have to pass in null there (which I still don't like, anyways). I would rather live with polymorphism than with an ugly if statement in the DescriptionBuilder class. Let me know if I still should change it.