refactoring

rewrite hide add/remove virtual functions