more general check