virtual (public) functions get implemented