better explanation of the possible options for the ctor