some methods like getName and getRRHeader requires the whole data, so they can't be cls methods which makes getType not able to be a cls method (self instance should be passed to getName,etc from getType).
Though it's possible to pass ->self.input.data as an argument to getType, thus we don't need access self.data, but I don't think it's a clean solution.