implented forAll