implement history support