diff --git a/libopenbmc_intf/openbmc_intf.c b/libopenbmc_intf/openbmc_intf.c
index 5dbe261..32efdd8 100644
--- a/libopenbmc_intf/openbmc_intf.c
+++ b/libopenbmc_intf/openbmc_intf.c
@@ -1,5 +1,5 @@
 /*
- * Generated by gdbus-codegen 2.40.2. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.48.2. DO NOT EDIT.
  *
  * The license of this code is the same as for the source it was derived from.
  */
@@ -1233,6 +1233,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _hwmon_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _hwmon_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -3103,6 +3104,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _fan_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _fan_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -5238,6 +5240,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_value_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_value_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -7055,6 +7058,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_threshold_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_threshold_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -8241,6 +8245,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_i2c_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_i2c_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -9457,6 +9462,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_match_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_match_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -11963,6 +11969,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _shared_resource_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _shared_resource_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -12136,34 +12143,6 @@
   "heartbeat"
 };
 
-static const _ExtendedGDBusArgInfo _control_signal_info_goto_system_state_ARG_state_name =
-{
-  {
-    -1,
-    (gchar *) "state_name",
-    (gchar *) "s",
-    NULL
-  },
-  FALSE
-};
-
-static const _ExtendedGDBusArgInfo * const _control_signal_info_goto_system_state_ARG_pointers[] =
-{
-  &_control_signal_info_goto_system_state_ARG_state_name,
-  NULL
-};
-
-static const _ExtendedGDBusSignalInfo _control_signal_info_goto_system_state =
-{
-  {
-    -1,
-    (gchar *) "GotoSystemState",
-    (GDBusArgInfo **) &_control_signal_info_goto_system_state_ARG_pointers,
-    NULL
-  },
-  "goto-system-state"
-};
-
 static const _ExtendedGDBusSignalInfo _control_signal_info_started =
 {
   {
@@ -12178,7 +12157,6 @@
 static const _ExtendedGDBusSignalInfo * const _control_signal_info_pointers[] =
 {
   &_control_signal_info_heartbeat,
-  &_control_signal_info_goto_system_state,
   &_control_signal_info_started,
   NULL
 };
@@ -12275,7 +12253,6 @@
  * @handle_init: Handler for the #Control::handle-init signal.
  * @get_heatbeat: Getter for the #Control:heatbeat property.
  * @get_poll_interval: Getter for the #Control:poll-interval property.
- * @goto_system_state: Handler for the #Control::goto-system-state signal.
  * @heartbeat: Handler for the #Control::heartbeat signal.
  * @started: Handler for the #Control::started signal.
  *
@@ -12332,25 +12309,6 @@
     1, G_TYPE_STRING);
 
   /**
-   * Control::goto-system-state:
-   * @object: A #Control.
-   * @arg_state_name: Argument.
-   *
-   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-openbmc-Control.GotoSystemState">"GotoSystemState"</link> is received.
-   *
-   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
-   */
-  g_signal_new ("goto-system-state",
-    G_TYPE_FROM_INTERFACE (iface),
-    G_SIGNAL_RUN_LAST,
-    G_STRUCT_OFFSET (ControlIface, goto_system_state),
-    NULL,
-    NULL,
-    g_cclosure_marshal_generic,
-    G_TYPE_NONE,
-    1, G_TYPE_STRING);
-
-  /**
    * Control::started:
    * @object: A #Control.
    *
@@ -12467,21 +12425,6 @@
 }
 
 /**
- * control_emit_goto_system_state:
- * @object: A #Control.
- * @arg_state_name: Argument to pass with the signal.
- *
- * Emits the <link linkend="gdbus-signal-org-openbmc-Control.GotoSystemState">"GotoSystemState"</link> D-Bus signal.
- */
-void
-control_emit_goto_system_state (
-    Control *object,
-    const gchar *arg_state_name)
-{
-  g_signal_emit_by_name (object, "goto-system-state", arg_state_name);
-}
-
-/**
  * control_emit_started:
  * @object: A #Control.
  *
@@ -13285,30 +13228,6 @@
 }
 
 static void
-_control_on_signal_goto_system_state (
-    Control *object,
-    const gchar *arg_state_name)
-{
-  ControlSkeleton *skeleton = CONTROL_SKELETON (object);
-
-  GList      *connections, *l;
-  GVariant   *signal_variant;
-  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
-
-  signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
-                   arg_state_name));
-  for (l = connections; l != NULL; l = l->next)
-    {
-      GDBusConnection *connection = l->data;
-      g_dbus_connection_emit_signal (connection,
-        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.openbmc.Control", "GotoSystemState",
-        signal_variant, NULL);
-    }
-  g_variant_unref (signal_variant);
-  g_list_free_full (connections, g_object_unref);
-}
-
-static void
 _control_on_signal_started (
     Control *object)
 {
@@ -13468,6 +13387,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _control_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -13563,7 +13483,6 @@
 control_skeleton_iface_init (ControlIface *iface)
 {
   iface->heartbeat = _control_on_signal_heartbeat;
-  iface->goto_system_state = _control_on_signal_goto_system_state;
   iface->started = _control_on_signal_started;
   iface->get_poll_interval = control_skeleton_get_poll_interval;
   iface->get_heatbeat = control_skeleton_get_heatbeat;
@@ -16124,6 +16043,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_host_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _control_host_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -17789,6 +17709,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_power_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _control_power_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -20308,6 +20229,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _watchdog_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _watchdog_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -23756,6 +23678,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _flash_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _flash_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -25424,6 +25347,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _flash_control_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _flash_control_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -27208,6 +27132,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _button_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _button_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
@@ -29021,6 +28946,7 @@
       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _led_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
+      g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _led_emit_changed");
       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
       g_source_unref (skeleton->priv->changed_properties_idle_source);
     }
diff --git a/libopenbmc_intf/openbmc_intf.h b/libopenbmc_intf/openbmc_intf.h
index a5e82a3..122354e 100644
--- a/libopenbmc_intf/openbmc_intf.h
+++ b/libopenbmc_intf/openbmc_intf.h
@@ -1,5 +1,5 @@
 /*
- * Generated by gdbus-codegen 2.40.2. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.48.2. DO NOT EDIT.
  *
  * The license of this code is the same as for the source it was derived from.
  */
@@ -81,6 +81,10 @@
 
 GType hwmon_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (HwmonProxy, g_object_unref)
+#endif
+
 void hwmon_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -147,6 +151,10 @@
 
 GType hwmon_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (HwmonSkeleton, g_object_unref)
+#endif
+
 Hwmon *hwmon_skeleton_new (void);
 
 
@@ -324,6 +332,10 @@
 
 GType fan_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (FanProxy, g_object_unref)
+#endif
+
 void fan_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -390,6 +402,10 @@
 
 GType fan_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (FanSkeleton, g_object_unref)
+#endif
+
 Fan *fan_skeleton_new (void);
 
 
@@ -586,6 +602,10 @@
 
 GType sensor_value_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SensorValueProxy, g_object_unref)
+#endif
+
 void sensor_value_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -652,6 +672,10 @@
 
 GType sensor_value_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SensorValueSkeleton, g_object_unref)
+#endif
+
 SensorValue *sensor_value_skeleton_new (void);
 
 
@@ -793,6 +817,10 @@
 
 GType sensor_threshold_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SensorThresholdProxy, g_object_unref)
+#endif
+
 void sensor_threshold_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -859,6 +887,10 @@
 
 GType sensor_threshold_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SensorThresholdSkeleton, g_object_unref)
+#endif
+
 SensorThreshold *sensor_threshold_skeleton_new (void);
 
 
@@ -927,6 +959,10 @@
 
 GType sensor_i2c_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SensorI2cProxy, g_object_unref)
+#endif
+
 void sensor_i2c_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -993,6 +1029,10 @@
 
 GType sensor_i2c_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SensorI2cSkeleton, g_object_unref)
+#endif
+
 SensorI2c *sensor_i2c_skeleton_new (void);
 
 
@@ -1072,6 +1112,10 @@
 
 GType sensor_match_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SensorMatchProxy, g_object_unref)
+#endif
+
 void sensor_match_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -1138,6 +1182,10 @@
 
 GType sensor_match_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SensorMatchSkeleton, g_object_unref)
+#endif
+
 SensorMatch *sensor_match_skeleton_new (void);
 
 
@@ -1222,6 +1270,10 @@
 
 GType process_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProcessProxy, g_object_unref)
+#endif
+
 void process_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -1288,6 +1340,10 @@
 
 GType process_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ProcessSkeleton, g_object_unref)
+#endif
+
 Process *process_skeleton_new (void);
 
 
@@ -1443,6 +1499,10 @@
 
 GType shared_resource_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SharedResourceProxy, g_object_unref)
+#endif
+
 void shared_resource_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -1509,6 +1569,10 @@
 
 GType shared_resource_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SharedResourceSkeleton, g_object_unref)
+#endif
+
 SharedResource *shared_resource_skeleton_new (void);
 
 
@@ -1538,10 +1602,6 @@
 
   gint  (*get_poll_interval) (Control *object);
 
-  void (*goto_system_state) (
-    Control *object,
-    const gchar *arg_state_name);
-
   void (*heartbeat) (
     Control *object,
     const gchar *arg_bus_name);
@@ -1569,10 +1629,6 @@
     Control *object,
     const gchar *arg_bus_name);
 
-void control_emit_goto_system_state (
-    Control *object,
-    const gchar *arg_state_name);
-
 void control_emit_started (
     Control *object);
 
@@ -1632,6 +1688,10 @@
 
 GType control_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ControlProxy, g_object_unref)
+#endif
+
 void control_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -1698,6 +1758,10 @@
 
 GType control_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ControlSkeleton, g_object_unref)
+#endif
+
 Control *control_skeleton_new (void);
 
 
@@ -1806,6 +1870,10 @@
 
 GType control_bmc_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ControlBmcProxy, g_object_unref)
+#endif
+
 void control_bmc_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -1872,6 +1940,10 @@
 
 GType control_bmc_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ControlBmcSkeleton, g_object_unref)
+#endif
+
 ControlBmc *control_bmc_skeleton_new (void);
 
 
@@ -2028,6 +2100,10 @@
 
 GType control_host_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ControlHostProxy, g_object_unref)
+#endif
+
 void control_host_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -2094,6 +2170,10 @@
 
 GType control_host_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ControlHostSkeleton, g_object_unref)
+#endif
+
 ControlHost *control_host_skeleton_new (void);
 
 
@@ -2242,6 +2322,10 @@
 
 GType control_power_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ControlPowerProxy, g_object_unref)
+#endif
+
 void control_power_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -2308,6 +2392,10 @@
 
 GType control_power_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ControlPowerSkeleton, g_object_unref)
+#endif
+
 ControlPower *control_power_skeleton_new (void);
 
 
@@ -2361,6 +2449,10 @@
 
 GType control_checkstop_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ControlCheckstopProxy, g_object_unref)
+#endif
+
 void control_checkstop_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -2427,6 +2519,10 @@
 
 GType control_checkstop_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ControlCheckstopSkeleton, g_object_unref)
+#endif
+
 ControlCheckstop *control_checkstop_skeleton_new (void);
 
 
@@ -2609,6 +2705,10 @@
 
 GType watchdog_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (WatchdogProxy, g_object_unref)
+#endif
+
 void watchdog_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -2675,6 +2775,10 @@
 
 GType watchdog_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (WatchdogSkeleton, g_object_unref)
+#endif
+
 Watchdog *watchdog_skeleton_new (void);
 
 
@@ -2778,6 +2882,10 @@
 
 GType event_log_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (EventLogProxy, g_object_unref)
+#endif
+
 void event_log_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -2844,6 +2952,10 @@
 
 GType event_log_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (EventLogSkeleton, g_object_unref)
+#endif
+
 EventLog *event_log_skeleton_new (void);
 
 
@@ -3089,6 +3201,10 @@
 
 GType flash_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlashProxy, g_object_unref)
+#endif
+
 void flash_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -3155,6 +3271,10 @@
 
 GType flash_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlashSkeleton, g_object_unref)
+#endif
+
 Flash *flash_skeleton_new (void);
 
 
@@ -3290,6 +3410,10 @@
 
 GType flash_control_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlashControlProxy, g_object_unref)
+#endif
+
 void flash_control_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -3356,6 +3480,10 @@
 
 GType flash_control_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (FlashControlSkeleton, g_object_unref)
+#endif
+
 FlashControl *flash_control_skeleton_new (void);
 
 
@@ -3526,6 +3654,10 @@
 
 GType button_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ButtonProxy, g_object_unref)
+#endif
+
 void button_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -3592,6 +3724,10 @@
 
 GType button_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ButtonSkeleton, g_object_unref)
+#endif
+
 Button *button_skeleton_new (void);
 
 
@@ -3768,6 +3904,10 @@
 
 GType led_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (LedProxy, g_object_unref)
+#endif
+
 void led_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -3834,6 +3974,10 @@
 
 GType led_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (LedSkeleton, g_object_unref)
+#endif
+
 Led *led_skeleton_new (void);
 
 
@@ -3951,6 +4095,10 @@
 
 GType host_ipmi_proxy_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (HostIpmiProxy, g_object_unref)
+#endif
+
 void host_ipmi_proxy_new (
     GDBusConnection     *connection,
     GDBusProxyFlags      flags,
@@ -4017,6 +4165,10 @@
 
 GType host_ipmi_skeleton_get_type (void) G_GNUC_CONST;
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (HostIpmiSkeleton, g_object_unref)
+#endif
+
 HostIpmi *host_ipmi_skeleton_new (void);
 
 
@@ -4103,6 +4255,11 @@
 };
 
 GType object_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ObjectProxy, g_object_unref)
+#endif
+
 ObjectProxy *object_proxy_new (GDBusConnection *connection, const gchar *object_path);
 
 #define TYPE_OBJECT_SKELETON (object_skeleton_get_type ())
@@ -4129,6 +4286,11 @@
 };
 
 GType object_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ObjectSkeleton, g_object_unref)
+#endif
+
 ObjectSkeleton *object_skeleton_new (const gchar *object_path);
 void object_skeleton_set_hwmon (ObjectSkeleton *object, Hwmon *interface_);
 void object_skeleton_set_fan (ObjectSkeleton *object, Fan *interface_);
@@ -4176,6 +4338,10 @@
   GDBusObjectManagerClientClass parent_class;
 };
 
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ObjectManagerClient, g_object_unref)
+#endif
+
 GType object_manager_client_get_type (void) G_GNUC_CONST;
 
 GType object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager, const gchar *object_path, const gchar *interface_name, gpointer user_data);
diff --git a/libopenbmc_intf/openbmc_intf.xml b/libopenbmc_intf/openbmc_intf.xml
index 81445a3..f8c726c 100644
--- a/libopenbmc_intf/openbmc_intf.xml
+++ b/libopenbmc_intf/openbmc_intf.xml
@@ -10,7 +10,7 @@
 		</method>
 		<method name="getSpeed">
 			<arg name="speed" type="i" direction="out"/>
-		</method>			
+		</method>
 		<method name="setSpeed">
 			<arg name="speed" type="i" direction="in"/>
 		</method>
@@ -94,10 +94,7 @@
 		<property name="heatbeat" type="i" access="read"/>
 		<signal name="Heartbeat">
                         <arg name="bus_name" type="s"/>
-                </signal>
-		<signal name="GotoSystemState">
-			<arg name="state_name" type="s"/>
-		</signal>
+               </signal>
 		<signal name="Started"/>
 	</interface>
 	<interface name="org.openbmc.control.Bmc">
@@ -149,7 +146,7 @@
 			<arg name="message" type="s"/>
 			<arg name="rc" type="i"/>
 		</signal>
-	</interface>	
+	</interface>
 	<interface name="org.openbmc.Flash">
 		<method name="update">
 			<arg name="filename" type="s" direction="in"/>
@@ -199,7 +196,7 @@
 		</method>
 		<method name="simPress"/>
 		<method name="simLongPress"/>
-	
+
                 <property name="state" type="b" access="read"/>
 		<signal name="Released"/>
 		<signal name="Pressed"/>
@@ -212,7 +209,7 @@
 		<method name="setOff"/>
 		<method name="setBlinkSlow"/>
 		<method name="setBlinkFast"/>
-		
+
                 <property name="color" type="i" access="read"/>
 		<property name="function" type="s" access="read"/>
 		<property name="state" type="s" access="read"/>
@@ -232,4 +229,4 @@
 			<arg direction="out" type="x" />
 		</method>
 	</interface>
-</node>	
+</node>
diff --git a/op-hostctl/control_host_obj.c b/op-hostctl/control_host_obj.c
index 0de6ddb..ff9e640 100644
--- a/op-hostctl/control_host_obj.c
+++ b/op-hostctl/control_host_obj.c
@@ -177,9 +177,7 @@
 	if(rc != GPIO_OK)
 	{
 		g_print("ERROR HostControl: GPIO sequence failed (rc=%d)\n",rc);
-	} else {
-		control_emit_goto_system_state(control,"HOST_BOOTING");
-	}
+    }
 	gpio_close(fsi_clk);
 	gpio_close(fsi_data);
 	gpio_close(fsi_enable);
diff --git a/op-pwrctl/power_control_obj.c b/op-pwrctl/power_control_obj.c
index 3a4729f..19ce118 100644
--- a/op-pwrctl/power_control_obj.c
+++ b/op-pwrctl/power_control_obj.c
@@ -71,13 +71,11 @@
 			if(pgood_state == 0)
 			{
 				control_power_emit_power_lost(control_power);
-				control_emit_goto_system_state(control,"HOST_POWERED_OFF");
 				g_pci_reset_held = 1;
 			}
 			else
 			{
 				control_power_emit_power_good(control_power);
-				control_emit_goto_system_state(control,"HOST_POWERED_ON");
 			}
 
 			for(i = 0; i < g_gpio_configs.power_gpio.num_reset_outs; i++)
@@ -267,11 +265,6 @@
 		do {
 			int i;
 			uint8_t power_up_out;
-			if(state == 1) {
-				control_emit_goto_system_state(control,"HOST_POWERING_ON");
-			} else {
-				control_emit_goto_system_state(control,"HOST_POWERING_OFF");
-			}
 			for (i = 0; i < power_gpio->num_power_up_outs; i++) {
 				GPIO *power_pin = &power_gpio->power_up_outs[i];
 				error = gpio_open(power_pin);
