Minimize code duplication by pushing most of the common code to abstract parent class's setProperties() method