There should be a set of convenience functions to set the listeners for all variants of a generic parameter.
For example, instead of having to call both IdListSim::ArmorD::setListener() and IdListSim::ProgramD::setListener(), one may simply call something like template ExtS::setIdListListeners(), where L is a template that implements each listener variant.
These convenience functions should be global, in a similar manner to translateNameToId(), which is present in IdList.h.
See: For example extsim/param/IdList.h, but valid for most parameter types in extsim/param/*.