Well, I'm totally agree with your approach. But in that case we need a Clone which will accept the new password. ICloneable.Clone() can't be changed, but new constructor (accepting password and old connection) would be good solution. Otherwise (and when it's not red marked in documentation...