diff --git a/objects/led_controller.c b/objects/led_controller.c
index 29698fe..8c3fa3c 100644
--- a/objects/led_controller.c
+++ b/objects/led_controller.c
@@ -2,6 +2,7 @@
 #include <stdio.h>
 #include "openbmc.h"
 #include "gpio.h"
+#include "object_mapper.h"
 
 /* ---------------------------------------------------------------------------------------------------- */
 static const gchar* dbus_object_path = "/org/openbmc/control/led";
@@ -31,15 +32,15 @@
 		if (rc != GPIO_OK) { break; }
 		rc = gpio_write(mygpio,0); 
 		if (rc != GPIO_OK) { break; }
+		led_set_state(led,"on");
+		
 	} while(0);
 	gpio_close(mygpio);
 	if (rc != GPIO_OK)
 	{
-		printf("ERROR ledcontrol: GPIO error %s (rc=%d)\n",mygpio->name,rc);
+		g_print("ERROR ledcontrol: GPIO error %s (rc=%d)\n",mygpio->name,rc);
 	}
-
 	return TRUE;
-
 }
 
 static gboolean
@@ -56,15 +57,38 @@
 		if (rc != GPIO_OK) { break; }
 		rc = gpio_write(mygpio,1); 
 		if (rc != GPIO_OK) { break; }
+		led_set_state(led,"off");
 	} while(0);
 	gpio_close(mygpio);
 	if (rc != GPIO_OK)
 	{
-		printf("ERROR ChassisIdentify: GPIO error %s (rc=%d)\n",mygpio->name,rc);
+		g_print("ERROR led controller: GPIO error %s (rc=%d)\n",mygpio->name,rc);
 	}
 	return TRUE;
 }
 
+void init_led(Led* led, GPIO* mygpio)
+{
+	int rc = GPIO_OK;
+	do {
+		uint8_t val;
+		rc = gpio_open(mygpio);
+		if (rc != GPIO_OK) { break; }
+		rc = gpio_read(mygpio,&val);
+		if (rc != GPIO_OK) { break; }
+		if (val == 0) {
+			led_set_state(led,"on");
+		} else {
+			led_set_state(led,"off");
+		}
+	} while(0);
+	gpio_close(mygpio);
+	if (rc != GPIO_OK) {
+		g_print("ERROR led controller: GPIO error %s (rc=%d)\n",
+			mygpio->name,rc);
+	}
+}
+
 static void 
 on_bus_acquired (GDBusConnection *connection,
                  const gchar     *name,
@@ -87,6 +111,10 @@
 		object_skeleton_set_led (object, led);
 		g_object_unref (led);
 
+		ObjectMapper* mapper = object_mapper_skeleton_new ();
+		object_skeleton_set_object_mapper (object, mapper);
+		g_object_unref (mapper);
+
 		//define method callbacks
 		g_signal_connect (led,
                     "handle-set-on",
@@ -101,13 +129,14 @@
 		led_set_function(led,led_gpio[i].name);
  
 		gpio_init(connection,&led_gpio[i]);
+		init_led(led, &led_gpio[i]);
 		/* Export the object (@manager takes its own reference to @object) */
 		g_dbus_object_manager_server_export (manager, G_DBUS_OBJECT_SKELETON (object));
 		g_object_unref (object);
 	}
 	/* Export all objects */
  	g_dbus_object_manager_server_set_connection (manager, connection);
-
+	emit_object_added((GDBusObjectManager*)manager); 
 }
 
 static void
