def data!
      result = {}
      @data.each_pair do |key, value|
        result[key] = value.is_a?(self.class) ? value.data! : value
      end
      result
    end
def data!
      result = {}
      @data.each_pair do |key, value|
        result[key] = value.is_a?(self.class) ? value.data! : value
      end
      result
    end
TODO remove this method