pedantic, but we use `def self.` elsewhere