code: func (megaPi *Adaptor) Connect() error {
  	if megaPi.connection == nil {
  		sp, err := serial.Open(megaPi.port, megaPi.serialMode)
  		if err != nil {
  			return err
  		}
  
  		// sleeping is required to give the board a chance to reset
  		time.Sleep(2 * time.Second)
  		megaPi.connection = sp
  	}
  
  	// kick off thread to send bytes to the board
  	go func() {
  		for {
  			select {
  			case bytes := <-megaPi.writeBytesChannel:
  				megaPi.connection.Write(bytes)
  				time.Sleep(10 * time.Millisecond)
  			case <-megaPi.finalizeChannel:
  				megaPi.finalizeChannel <- struct{}{}
  				return
  			default:
  				time.Sleep(10 * time.Millisecond)
  			}
  		}
  	}()
  	return nil
  }
docs: // Connect starts a connection to the board