code: func (a *Agent) Start() error {
  	a.logger.Printf("[INFO] agent: Serf agent starting")
  
  	// Create serf first
  	serf, err := serf.Create(a.conf)
  	if err != nil {
  		return fmt.Errorf("Error creating Serf: %s", err)
  	}
  	a.serf = serf
  
  	// Start event loop
  	go a.eventLoop()
  	return nil
  }
docs: // Start is used to initiate the event listeners. It is separate from
  // create so that there isn't a race condition between creating the
  // agent and registering handlers