only let required attributes be set via constructor