first pass at cleaning up TimelineModel