Index: uspace/drv/usbhub/usbhub.h
===================================================================
--- uspace/drv/usbhub/usbhub.h	(revision 0c05496f204beecce9084ee85523c0e663429449)
+++ uspace/drv/usbhub/usbhub.h	(revision b666608e2a8e30364304b3bc1171c7baa7727130)
@@ -46,6 +46,9 @@
 	/** Number of ports. */
 	int port_count;
-	/** General device info. */
-	usb_hcd_attached_device_info_t * device;
+	/** General usb device info. */
+	usb_hcd_attached_device_info_t * usb_device;
+	/** General device info*/
+	device_t * device;
+
 } usb_hub_info_t;
 
Index: uspace/drv/usbhub/utils.c
===================================================================
--- uspace/drv/usbhub/utils.c	(revision 0c05496f204beecce9084ee85523c0e663429449)
+++ uspace/drv/usbhub/utils.c	(revision b666608e2a8e30364304b3bc1171c7baa7727130)
@@ -34,16 +34,17 @@
  */
 #include <driver.h>
-#include <usb/devreq.h>
+#include <bool.h>
+#include <errno.h>
+
 #include <usbhc_iface.h>
 #include <usb/usbdrv.h>
 #include <usb/descriptor.h>
-#include <driver.h>
-#include <bool.h>
-#include <errno.h>
+#include <usb/devreq.h>
 #include <usb/classes/hub.h>
+
 #include "usbhub.h"
 #include "usbhub_private.h"
 #include "port_status.h"
-#include <usb/devreq.h>
+
 
 static void check_hub_changes(void);
@@ -302,4 +303,6 @@
 	//result->device = device;
 	result->port_count = -1;
+	/// \TODO is this correct? is the device stored?
+	result->device = device;
 
 
@@ -316,6 +319,6 @@
 	}*/
 
-	result->device = usb_new(usb_hcd_attached_device_info_t);
-	result->device->address = addr;
+	result->usb_device = usb_new(usb_hcd_attached_device_info_t);
+	result->usb_device->address = addr;
 
 	// get hub descriptor
@@ -387,5 +390,5 @@
 	usb_device_request_setup_packet_t request;
 	usb_target_t target;
-	target.address = hub_info->device->address;
+	target.address = hub_info->usb_device->address;
 	target.endpoint = 0;
 	for (port = 0; port < hub_info->port_count; ++port) {
@@ -429,5 +432,4 @@
  * @param target
  */
-
 static void usb_hub_init_add_device(int hc, uint16_t port, usb_target_t target) {
 	usb_device_request_setup_packet_t request;
@@ -479,9 +481,22 @@
 		return;
 	}
+
+
 	usb_drv_release_default_address(hc);
+	/*
+	 devman_handle_t dev_handle;
+	rc = child_device_register_wrapper(hub_dev, "dev",
+	 *	match_id, match_score, &dev_handle);
+	if (rc != EOK) {
+		free(id);
+	}
+	 *
+	 */
 
 
 	/// \TODO driver work
 	//add_child_device.....
+	//opResult = usb_drv_bind_address(hc, new_device_address,
+    //devman_handle_t handle);...
 }
 
@@ -594,24 +609,19 @@
 			lst_item = lst_item->next) {
 		printf("[usb_hub] checking hub changes\n");
+		usb_hub_info_t * hub_info = ((usb_hub_info_t*)lst_item->data);
 		/*
 		 * Check status change pipe of this hub.
 		 */
 
-		usb_target_t target = {
-			.address = 5,
-			.endpoint = 1
-		};
-		/// \TODO uncomment once it works correctly
-		//target.address = usb_create_hub_info(lst_item)->device->address;
-
-		size_t port_count = 7;
+		usb_target_t target;
+		target.address = hub_info->usb_device->address;
+		target.endpoint = 1;
+
+		size_t port_count = hub_info->port_count;
 
 		/*
 		 * Connect to respective HC.
 		 */
-		/// \FIXME this is incorrect code: here
-		/// must be used particular device instead of NULL
-		//which one?
-		int hc = usb_drv_hc_connect(NULL, 0);
+		int hc = usb_drv_hc_connect(hub_info->device, 0);
 		if (hc < 0) {
 			continue;
