I prefer the `self` approach