implement timeline functionality