Track and verify required semantics

I suggest `List` instead of `Traversable`. The latter does not give any guarantee of immutability.