def [](property)
      value = nil
      return value unless (value = super(property)).nil?
      if api and !loaded
        # load the object if trying to access a property
        self.loaded = true
        fetch
      end
      super(property)
    end
def [](property)
      value = nil
      return value unless (value = super(property)).nil?
      if api and !loaded
        # load the object if trying to access a property
        self.loaded = true
        fetch
      end
      super(property)
    end
get the property from the hash
 if the value is not set and the object has not been loaded, try to load it