Maybe Generics are the answer here? This builder-style for creating objects is quite nice, and I think we should do it consistently...