lots of changes
diff --git a/objects/power_control_obj.c b/objects/power_control_obj.c
index c0047bd..ce9144b 100644
--- a/objects/power_control_obj.c
+++ b/objects/power_control_obj.c
@@ -42,23 +42,6 @@
  				control_power_emit_power_good(control_power);

  			}

 		}

-	//}

-	//else

-	//{

-		//TODO: error handling

-	/*	GVariantBuilder *b;

-		GVariant *dict;

-		b = g_variant_builder_new (G_VARIANT_TYPE ("a{ss}"));

-		g_variant_builder_add (b, "{ss}", "object",dbus_object_path);

-		g_variant_builder_add (b, "{ss}", "message", "Unable to read pgood gpio");

-		char buf[254];

-		sprintf(buf,"%s/gpio%d",pgood.dev,pgood.num);

-		g_variant_builder_add (b, "{ss}", "gpio",buf);

-		

-		dict = g_variant_builder_end (b);

-		event_log_emit_event_log(event_log,dict);

-		

-	}*/

 	return TRUE;

 }

 

@@ -77,23 +60,31 @@
                                                 "Invalid power state");

 		return TRUE;

 	}

+	// return from method call

+	control_power_complete_set_power_state(pwr,invocation);

 	if (state == control_power_get_state(pwr))

 	{

-		g_dbus_method_invocation_return_dbus_error (invocation,

-                                                "org.openbmc.ControlPower.Error.Failed",

-                                                "Power Control is already at requested state");

-		return TRUE;     

+		g_print("Power already at requested state: %d\n",state);

 	}

+	else

+	{

+		g_print("Set power state: %d\n",state);

+		gpio_open(&power_pin);

+		gpio_write(&power_pin,!state); 

+		gpio_close(&power_pin);

+		control_power_set_state(pwr,state);

+	}

+	return TRUE;

+}

 

-	//go ahead and return from method call

-	control_power_complete_set_power_state(pwr,invocation);

-

-	g_print("Set power state: %d\n",state);

-	gpio_open(&power_pin);

-	gpio_write(&power_pin,!state); 

-	gpio_close(&power_pin);

-

-	control_power_set_state(pwr,state);

+static gboolean

+on_init (Control         *control,

+         GDBusMethodInvocation  *invocation,

+         gpointer                user_data)

+{

+	guint poll_interval = control_get_poll_interval(control);

+	g_timeout_add(poll_interval, poll_pgood, user_data);

+	control_complete_init(control,invocation);

 	return TRUE;

 }

 

@@ -152,7 +143,12 @@
                 	    G_CALLBACK (on_get_power_state),

                 	    NULL); /* user_data */

 

-		g_timeout_add(5000, poll_pgood, object);

+		g_signal_connect (control,

+                	    "handle-init",

+                	    G_CALLBACK (on_init),

+                	    object); /* user_data */

+

+

 

 		/* Export the object (@manager takes its own reference to @object) */

 		g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));