code: func NewCurrent(unit, lang, key string, options ...Option) (*CurrentWeatherData, error) {
  	unitChoice := strings.ToUpper(unit)
  	langChoice := strings.ToUpper(lang)
  
  	c := &CurrentWeatherData{
  		Settings: NewSettings(),
  	}
  
  	if ValidDataUnit(unitChoice) {
  		c.Unit = DataUnits[unitChoice]
  	} else {
  		return nil, errUnitUnavailable
  	}
  
  	if ValidLangCode(langChoice) {
  		c.Lang = langChoice
  	} else {
  		return nil, errLangUnavailable
  	}
  	var err error
  	c.Key, err = setKey(key)
  	if err != nil {
  		return nil, err
  	}
  
  	if err := setOptions(c.Settings, options); err != nil {
  		return nil, err
  	}
  	return c, nil
  }
docs: // NewCurrent returns a new CurrentWeatherData pointer with the supplied parameters