Index: uspace/drv/usbhub/main.c
===================================================================
--- uspace/drv/usbhub/main.c	(revision 7102aa59b743600ad06edfdc84edb29ae4045e4f)
+++ uspace/drv/usbhub/main.c	(revision 434ef651b00a5658ecac8f3bd8e99559e06c9bf7)
@@ -42,6 +42,9 @@
 #include "usbhub_private.h"
 
-
-usb_endpoint_description_t hub_status_change_endpoint_description = {
+/** Hub status-change endpoint description.
+ *
+ * For more information see section 11.15.1 of USB 1.1 specification.
+ */
+static usb_endpoint_description_t hub_status_change_endpoint_description = {
 	.transfer_type = USB_TRANSFER_INTERRUPT,
 	.direction = USB_DIRECTION_IN,
@@ -57,7 +60,13 @@
 };
 
+static usb_endpoint_description_t *usb_hub_endpoints[] = {
+	&hub_status_change_endpoint_description,
+	NULL
+};
+
 static usb_driver_t usb_hub_driver = {
-	.name = "usbhub",
-	.ops = &usb_hub_driver_ops
+	.name = NAME,
+	.ops = &usb_hub_driver_ops,
+	.endpoints = usb_hub_endpoints
 };
 
@@ -65,13 +74,8 @@
 int main(int argc, char *argv[])
 {
+	printf(NAME ": HelenOS USB hub driver.\n");
+
 	usb_log_enable(USB_LOG_LEVEL_DEBUG, NAME);
-	usb_log_info("starting hub driver\n");
-
 	
-	usb_hub_driver.endpoints = (usb_endpoint_description_t**)
-			malloc(2 * sizeof(usb_endpoint_description_t*));
-	usb_hub_driver.endpoints[0] = &hub_status_change_endpoint_description;
-	usb_hub_driver.endpoints[1] = NULL;
-
 	return usb_driver_main(&usb_hub_driver);
 }
Index: uspace/drv/usbhub/usbhub.c
===================================================================
--- uspace/drv/usbhub/usbhub.c	(revision 7102aa59b743600ad06edfdc84edb29ae4045e4f)
+++ uspace/drv/usbhub/usbhub.c	(revision 434ef651b00a5658ecac8f3bd8e99559e06c9bf7)
@@ -157,35 +157,22 @@
 static int usb_hub_set_configuration(usb_hub_info_t * hub_info){
 	//device descriptor
-	usb_standard_device_descriptor_t std_descriptor;
-	int opResult = usb_request_get_device_descriptor(
-		&hub_info->usb_device->ctrl_pipe,
-	    &std_descriptor);
-	if(opResult!=EOK){
-		usb_log_error("could not get device descriptor, %d\n",opResult);
-		return opResult;
-	}
+	usb_standard_device_descriptor_t *std_descriptor
+	    = &hub_info->usb_device->descriptors.device;
 	usb_log_info("hub has %d configurations\n",
-			std_descriptor.configuration_count);
-	if(std_descriptor.configuration_count<1){
+	    std_descriptor->configuration_count);
+	if(std_descriptor->configuration_count<1){
 		usb_log_error("THERE ARE NO CONFIGURATIONS AVAILABLE\n");
 		//shouldn`t I return?
-	}
-
-	/* Retrieve full configuration descriptor. */
-	uint8_t *descriptors = NULL;
-	size_t descriptors_size = 0;
-	opResult = usb_request_get_full_configuration_descriptor_alloc(
-	    &hub_info->usb_device->ctrl_pipe, 0,
-	    (void **) &descriptors, &descriptors_size);
-	if (opResult != EOK) {
-		usb_log_error("Could not get configuration descriptor: %s.\n",
-		    str_error(opResult));
-		return opResult;
-	}
+		//definitely
+		return EINVAL;
+	}
+
 	usb_standard_configuration_descriptor_t *config_descriptor
-	    = (usb_standard_configuration_descriptor_t *) descriptors;
+	    = (usb_standard_configuration_descriptor_t *)
+	    hub_info->usb_device->descriptors.configuration;
 
 	/* Set configuration. */
-	opResult = usb_request_set_configuration(&hub_info->usb_device->ctrl_pipe,
+	int opResult = usb_request_set_configuration(
+	    &hub_info->usb_device->ctrl_pipe,
 	    config_descriptor->configuration_number);
 
@@ -197,5 +184,5 @@
 	usb_log_debug("\tused configuration %d\n",
 			config_descriptor->configuration_number);
-	free(descriptors);
+
 	return EOK;
 }
@@ -243,5 +230,5 @@
 
 	/// \TODO what is this?
-	usb_log_debug("adding to ddf");
+	usb_log_debug("Creating `hub' function.\n");
 	ddf_fun_t *hub_fun = ddf_fun_create(hub_info->usb_device->ddf_dev,
 			fun_exposed, "hub");
@@ -257,10 +244,12 @@
 	fid_t fid = fibril_create(usb_hub_control_loop, hub_info);
 	if (fid == 0) {
-		usb_log_error("failed to start monitoring fibril for new hub");
+		usb_log_error("failed to start monitoring fibril for new hub.\n");
 		return ENOMEM;
 	}
 	fibril_add_ready(fid);
-	usb_log_debug("hub fibril created");
-	usb_log_debug("has %d ports ",hub_info->port_count);
+	usb_log_debug("Hub fibril created.\n");
+
+	usb_log_info("Controlling hub `%s' (%d ports).\n",
+	    hub_info->usb_device->ddf_dev->name, hub_info->port_count);
 	return EOK;
 }
@@ -533,5 +522,5 @@
 	//port reset
 	if (usb_port_reset_completed(&status)) {
-		usb_log_info("port reset complete");
+		usb_log_info("port reset complete\n");
 		if (usb_port_enabled(&status)) {
 			usb_hub_finalize_add_device(hub, port, usb_port_speed(&status));
Index: uspace/drv/usbhub/usbhub.h
===================================================================
--- uspace/drv/usbhub/usbhub.h	(revision 7102aa59b743600ad06edfdc84edb29ae4045e4f)
+++ uspace/drv/usbhub/usbhub.h	(revision 434ef651b00a5658ecac8f3bd8e99559e06c9bf7)
@@ -46,20 +46,4 @@
 #include <usb/pipes.h>
 #include <usb/devdrv.h>
-
-
-/** Hub status-change endpoint description
- *
- * For more see usb hub specification in 11.15.1 of
- */
-extern usb_endpoint_description_t hub_status_change_endpoint_description;
-
-
-
-/* Hub endpoints. */
-/*typedef struct {
-        usb_pipe_t control;
-        usb_pipe_t status_change;
-} usb_hub_endpoints_t;
-*/
 
 
