refactoring of AbstractHistory