implemented forall