Use self-type, not impl-direct!