code: func NewHistorical(unit, key string, options ...Option) (*HistoricalWeatherData, error) {
  	h := &HistoricalWeatherData{
  		Settings: NewSettings(),
  	}
  
  	unitChoice := strings.ToUpper(unit)
  	if !ValidDataUnit(unitChoice) {
  		return nil, errUnitUnavailable
  	}
  	h.Unit = DataUnits[unitChoice]
  
  	var err error
  	h.Key, err = setKey(key)
  	if err != nil {
  		return nil, err
  	}
  
  	if err := setOptions(h.Settings, options); err != nil {
  		return nil, err
  	}
  	return h, nil
  }
docs: // NewHistorical returns a new HistoricalWeatherData pointer with
  //the supplied arguments.