added forall implementation