converted forall to do concurrent