the class instance should not preserve any state
option class does not preserve any state
collection now takes a map to allow different names for options
bugfix: the same option may have multiple argument names