implement forall