use self.class instead of constant name to allow inheritance