add history function