extra chained promises stuff: made second two promises happen in parallel since they only depend on the first