code: func FromYAML(file string, manager WatcherManager) (m *Machine, err error) {
  	afile, err := filepath.Abs(file)
  	if err != nil {
  		return nil, errors.Wrapf(err, "could not determine absolute path for %s", file)
  	}
  
  	f, err := ioutil.ReadFile(afile)
  	if err != nil {
  		return nil, err
  	}
  
  	m = &Machine{}
  	err = yaml.Unmarshal(f, m)
  	if err != nil {
  		return nil, err
  	}
  
  	m.notifiers = []NotificationService{}
  	m.manager = manager
  	m.directory = filepath.Dir(afile)
  	m.manifest = afile
  	m.instanceID = m.UniqueID()
  
  	err = m.manager.SetMachine(m)
  	if err != nil {
  		return nil, errors.Wrap(err, "could not register with manager")
  	}
  
  	err = m.Setup()
  	if err != nil {
  		return nil, err
  	}
  
  	return m, nil
  }
docs: // FromYAML loads a macine from a YAML definition