Work registration

* Replace individual options arguments with an options class. 
* Each WorkRegistry has a set of settings that cannot be changed.
* Internal refactorings.