generalize timeline to use abstract files