diff --git a/objects/control_bmc_barreleye.c b/objects/control_bmc_barreleye.c
index 0e6c5cb..399ab26 100644
--- a/objects/control_bmc_barreleye.c
+++ b/objects/control_bmc_barreleye.c
@@ -12,6 +12,7 @@
 
 /* ---------------------------------------------------------------------------------------------------- */
 static const gchar* dbus_object_path = "/org/openbmc/control";
+static const gchar* instance_name = "bmc0";
 static const gchar* dbus_name        = "org.openbmc.control.Bmc";
 
 //this probably should come from some global SOC config
@@ -23,7 +24,6 @@
 #define SPI_BASE		(off_t)0x1e630000
 #define SCU_BASE                (off_t)0x1e780000
 #define UART_BASE               (off_t)0x1e783000
-#define UART_BASE2              (off_t)0x1e785000
 #define COM_BASE                (off_t)0x1e789000
 #define COM_BASE2               (off_t)0x1e789100
 #define GPIO_BASE		(off_t)0x1e6e2000
@@ -72,11 +72,6 @@
 	devmem(bmcreg+0x00,0x00000000);  //Set Baud rate divisor -> 13 (Baud 115200)
 	devmem(bmcreg+0x04,0x00000000);  //Set Baud rate divisor -> 13 (Baud 115200)
 	devmem(bmcreg+0x08,0x000000c1);  //Disable Parity, 1 stop bit, 8 bits
-
-	bmcreg = memmap(mem_fd,UART_BASE2);
-	devmem(bmcreg+0x0c,0x00000000);
-	devmem(bmcreg+0x2c,0x00000000);
-
 	bmcreg = memmap(mem_fd,COM_BASE);
 	devmem(bmcreg+0x9C,0x08060000);  //Set UART routing
 
@@ -103,7 +98,6 @@
 	devmem(bmcreg+0x170,0x00000042);
 	devmem(bmcreg+0x174,0x00004000);
 
-
 	close(mem_fd);
 }
 
@@ -112,13 +106,25 @@
          GDBusMethodInvocation  *invocation,
          gpointer                user_data)
 {
+	//#ifdef __arm__
+	//reg_init();
+	//#endif
+	control_complete_init(control,invocation);
+	//control_emit_goto_system_state(control,"BMC_STARTING");
+	
+	return TRUE;
+}
+gboolean go(gpointer user_data)
+{
+ 	cmdline *cmd = user_data;
+	Control* control = object_get_control((Object*)cmd->user_data);
 	#ifdef __arm__
 	reg_init();
 	#endif
-	control_complete_init(control,invocation);
 	control_emit_goto_system_state(control,"BMC_STARTING");
 	
-	return TRUE;
+	g_main_loop_quit(cmd->loop);
+	return FALSE;
 }
 
 static void 
@@ -128,47 +134,48 @@
 {
 	ObjectSkeleton *object;
  	cmdline *cmd = user_data;
-	if (cmd->argc < 2)
-	{
-		g_print("No objects created.  Put object name(s) on command line\n");
-		return;
-	}	
   	manager = g_dbus_object_manager_server_new (dbus_object_path);
-  	int i=0;
-  	for (i=1;i<cmd->argc;i++)
-  	{
-		gchar *s;
-  		s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]);
-  		object = object_skeleton_new (s);
-  		g_free (s);
 
-		ControlBmc* control_bmc = control_bmc_skeleton_new ();
-		object_skeleton_set_control_bmc (object, control_bmc);
-		g_object_unref (control_bmc);
+	gchar *s;
+	s = g_strdup_printf ("%s/%s",dbus_object_path,instance_name);
+	object = object_skeleton_new (s);
+	g_free (s);
 
-		Control* control = control_skeleton_new ();
-		object_skeleton_set_control (object, control);
-		g_object_unref (control);
+	ControlBmc* control_bmc = control_bmc_skeleton_new ();
+	object_skeleton_set_control_bmc (object, control_bmc);
+	g_object_unref (control_bmc);
 
-		//define method callbacks here
-		g_signal_connect (control,
-        	            "handle-init",
-                	    G_CALLBACK (on_init),
-                	    NULL); /* user_data */
+	Control* control = control_skeleton_new ();
+	object_skeleton_set_control (object, control);
+	g_object_unref (control);
 
-		/* 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);
-	}
+	//define method callbacks here
+	g_signal_connect (control,
+       	            "handle-init",
+               	    G_CALLBACK (on_init),
+               	    NULL); /* user_data */
+
+	/* 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);
+
+	//TODO:  This is a bad hack to wait for object to be on bus
+	//sleep(1);
+	cmd->user_data = object;
+	g_idle_add(go,cmd);
 }
 
+
 static void
 on_name_acquired (GDBusConnection *connection,
                   const gchar     *name,
                   gpointer         user_data)
 {
+
+
 }
 
 static void
@@ -179,8 +186,6 @@
 }
 
 
-
-
 /*----------------------------------------------------------------*/
 /* Main Event Loop                                                */
 
@@ -194,6 +199,7 @@
 
   guint id;
   loop = g_main_loop_new (NULL, FALSE);
+  cmd.loop = loop;
 
   id = g_bus_own_name (DBUS_TYPE,
                        dbus_name,
diff --git a/objects/control_bmc_obj.c b/objects/control_bmc_obj.c
index 2aedd04..e1e1a8a 100644
--- a/objects/control_bmc_obj.c
+++ b/objects/control_bmc_obj.c
@@ -12,6 +12,7 @@
 
 /* ---------------------------------------------------------------------------------------------------- */
 static const gchar* dbus_object_path = "/org/openbmc/control";
+static const gchar* instance_name = "bmc0";
 static const gchar* dbus_name        = "org.openbmc.control.Bmc";
 
 //this probably should come from some global SOC config
@@ -103,13 +104,25 @@
          GDBusMethodInvocation  *invocation,
          gpointer                user_data)
 {
+	//#ifdef __arm__
+	//reg_init();
+	//#endif
+	control_complete_init(control,invocation);
+	//control_emit_goto_system_state(control,"BMC_STARTING");
+	
+	return TRUE;
+}
+gboolean go(gpointer user_data)
+{
+ 	cmdline *cmd = user_data;
+	Control* control = object_get_control((Object*)cmd->user_data);
 	#ifdef __arm__
 	reg_init();
 	#endif
-	control_complete_init(control,invocation);
 	control_emit_goto_system_state(control,"BMC_STARTING");
 	
-	return TRUE;
+	g_main_loop_quit(cmd->loop);
+	return FALSE;
 }
 
 static void 
@@ -119,47 +132,48 @@
 {
 	ObjectSkeleton *object;
  	cmdline *cmd = user_data;
-	if (cmd->argc < 2)
-	{
-		g_print("No objects created.  Put object name(s) on command line\n");
-		return;
-	}	
   	manager = g_dbus_object_manager_server_new (dbus_object_path);
-  	int i=0;
-  	for (i=1;i<cmd->argc;i++)
-  	{
-		gchar *s;
-  		s = g_strdup_printf ("%s/%s",dbus_object_path,cmd->argv[i]);
-  		object = object_skeleton_new (s);
-  		g_free (s);
 
-		ControlBmc* control_bmc = control_bmc_skeleton_new ();
-		object_skeleton_set_control_bmc (object, control_bmc);
-		g_object_unref (control_bmc);
+	gchar *s;
+	s = g_strdup_printf ("%s/%s",dbus_object_path,instance_name);
+	object = object_skeleton_new (s);
+	g_free (s);
 
-		Control* control = control_skeleton_new ();
-		object_skeleton_set_control (object, control);
-		g_object_unref (control);
+	ControlBmc* control_bmc = control_bmc_skeleton_new ();
+	object_skeleton_set_control_bmc (object, control_bmc);
+	g_object_unref (control_bmc);
 
-		//define method callbacks here
-		g_signal_connect (control,
-        	            "handle-init",
-                	    G_CALLBACK (on_init),
-                	    NULL); /* user_data */
+	Control* control = control_skeleton_new ();
+	object_skeleton_set_control (object, control);
+	g_object_unref (control);
 
-		/* 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);
-	}
+	//define method callbacks here
+	g_signal_connect (control,
+       	            "handle-init",
+               	    G_CALLBACK (on_init),
+               	    NULL); /* user_data */
+
+	/* 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);
+
+	//TODO:  This is a bad hack to wait for object to be on bus
+	//sleep(1);
+	cmd->user_data = object;
+	g_idle_add(go,cmd);
 }
 
+
 static void
 on_name_acquired (GDBusConnection *connection,
                   const gchar     *name,
                   gpointer         user_data)
 {
+
+
 }
 
 static void
@@ -170,8 +184,6 @@
 }
 
 
-
-
 /*----------------------------------------------------------------*/
 /* Main Event Loop                                                */
 
@@ -185,6 +197,7 @@
 
   guint id;
   loop = g_main_loop_new (NULL, FALSE);
+  cmd.loop = loop;
 
   id = g_bus_own_name (DBUS_TYPE,
                        dbus_name,
