Feature/en 1889

This is a lot of arguments to pass into a constructor. Perhaps it would be better to change the design to use setter methods to set the individual attributes since there are so many.