adds forAll(), deprecates ifDefined()