split out timeline into its own class