refactoring
hides non-virtual f.