Declarative means to define object properties by passing a hash to the constructor, which will set the corresponding ivars.
Atomic Object
gem "constructor", "~> 2.0.0"