code: func (api *Client) Create(h *host.Host) error {
  	if err := cert.BootstrapCertificates(h.AuthOptions()); err != nil {
  		return fmt.Errorf("Error generating certificates: %s", err)
  	}
  
  	log.Info("Running pre-create checks...")
  
  	if err := h.Driver.PreCreateCheck(); err != nil {
  		return mcnerror.ErrDuringPreCreate{
  			Cause: err,
  		}
  	}
  
  	if err := api.Save(h); err != nil {
  		return fmt.Errorf("Error saving host to store before attempting creation: %s", err)
  	}
  
  	log.Info("Creating machine...")
  
  	if err := api.performCreate(h); err != nil {
  		return fmt.Errorf("Error creating machine: %s", err)
  	}
  
  	log.Debug("Reticulating splines...")
  
  	return nil
  }
docs: // Create is the wrapper method which covers all of the boilerplate around
  // actually creating, provisioning, and persisting an instance in the store.