code: func New() (c *Client, err error) {
  	c = new(Client)
  
  	c.conn, err = dbus.SystemBusPrivate()
  	if err != nil {
  		return nil, err
  	}
  
  	methods := []dbus.Auth{dbus.AuthExternal(strconv.Itoa(os.Getuid()))}
  	err = c.conn.Auth(methods)
  	if err != nil {
  		c.conn.Close()
  		return nil, err
  	}
  
  	err = c.conn.Hello()
  	if err != nil {
  		c.conn.Close()
  		return nil, err
  	}
  
  	c.object = c.conn.Object("com.coreos.update1", dbus.ObjectPath(dbusPath))
  
  	// Setup the filter for the StatusUpdate signals
  	match := fmt.Sprintf("type='signal',interface='%s',member='%s'", dbusInterface, dbusMember)
  
  	call := c.conn.BusObject().Call("org.freedesktop.DBus.AddMatch", 0, match)
  	if call.Err != nil {
  		return nil, err
  	}
  
  	c.ch = make(chan *dbus.Signal, signalBuffer)
  	c.conn.Signal(c.ch)
  
  	return c, nil
  }
docs: // New returns a Client connected to dbus over a private connection with a
  // subscription to updateengine.