use explicit `self` in sufficiently complex methods