it'd be nice if `self.class.name.rpartition('::').last` were a class function instead, DRY it and the method below up a bit.