Is something preventing you from using the more usual def self.parse() ?