Would it be better to have `allowed: immutable.Set[Address]`?
Then you operate on `Address` everywhere here, and can also use `contains` instead of `exists`.