call @staticmethods on `self` instead of on Api directly to allow overrides