deal with transitivity