breaking out functions along hard "timeline", building foundations for porting to app::timeline() once flow is tested and working -sG