code: func (f *Feed) FromValues(values Values) (err error) {
  	topic := values.Get("topic")
  	if topic != "" {
  		if err := f.Topic.FromHex(values.Get("topic")); err != nil {
  			return err
  		}
  	} else { // see if the user set name and relatedcontent
  		name := values.Get("name")
  		relatedContent, _ := hexutil.Decode(values.Get("relatedcontent"))
  		if len(relatedContent) > 0 {
  			if len(relatedContent) < storage.AddressLength {
  				return NewErrorf(ErrInvalidValue, "relatedcontent field must be a hex-encoded byte array exactly %d bytes long", storage.AddressLength)
  			}
  			relatedContent = relatedContent[:storage.AddressLength]
  		}
  		f.Topic, err = NewTopic(name, relatedContent)
  		if err != nil {
  			return err
  		}
  	}
  	f.User = common.HexToAddress(values.Get("user"))
  	return nil
  }
docs: // FromValues deserializes this instance from a string key-value store
  // useful to parse query strings