While I'm also a fan of immutable objects I prefer this solution here for the following reasons:

  * Avoid too many parameters for an constructor
  * provide out-of-the box default behavior
  * extensible API for additional attributes in future.