added addDefaultsIfNotSet and an enabled parameter