exercise 1.8 requires transitivity, close #533