// implementations of overloaded public functions: we use different names
// for them to avoid the virtual function hiding problems in the derived
// classes
// implementations of overloaded public functions: we use different names
// for them to avoid the virtual function hiding problems in the derived
// classes