The public member dt of the SystemState class should be removed since it is redundant with the same quantity in the Settings class. All uses of system.dt or systemPtr->dt should be replaced with corresponding references to the Settings quantity. This will eliminate the risk of a user accidentally using the wrong value.