None of the fields should be publicly writable and some should not even be writable from derived classes.