use gobject signal