Problems need to be initialisable. The reason for this is that in certain situations a problem can only be fully constructed once all its required fields have been set via xml. In this particular situation the fields are dependent on one another and modifying one field will cause the problem to be re-initialised.