Index: uspace/drv/bus/usb/usbhub/usbhub.c
===================================================================
--- uspace/drv/bus/usb/usbhub/usbhub.c	(revision 35bc430f632555e3c97a31892fd2ec0ceb60a89a)
+++ uspace/drv/bus/usb/usbhub/usbhub.c	(revision 8b68bdfef6c3f6dfcee87b4f33a9f87f225f827d)
@@ -359,5 +359,5 @@
 	/* Get number of possible configurations from device descriptor */
 	const size_t configuration_count =
-	    usb_device->descriptors.device.configuration_count;
+	    usb_device_get_device_descriptor(usb_device)->configuration_count;
 	usb_log_debug("Hub has %zu configurations.\n", configuration_count);
 
@@ -367,6 +367,10 @@
 	}
 
-	if (usb_device->descriptors.configuration_size
-	    < sizeof(usb_standard_configuration_descriptor_t)) {
+	// TODO: Make sure that the cast is correct
+	size_t config_size = 0;
+	const usb_standard_configuration_descriptor_t *config_descriptor =
+	    usb_device_get_configuration_descriptor(usb_device, &config_size);
+
+	if (config_size < sizeof(usb_standard_configuration_descriptor_t)) {
 	    usb_log_error("Configuration descriptor is not big enough"
 	        " to fit standard configuration descriptor.\n");
@@ -374,8 +378,4 @@
 	}
 
-	// TODO: Make sure that the cast is correct
-	const usb_standard_configuration_descriptor_t *config_descriptor
-	    = (usb_standard_configuration_descriptor_t *)
-	    usb_device->descriptors.configuration;
 
 	/* Set configuration. Use the configuration that was in
Index: uspace/lib/usbhid/src/hidreport.c
===================================================================
--- uspace/lib/usbhid/src/hidreport.c	(revision 35bc430f632555e3c97a31892fd2ec0ceb60a89a)
+++ uspace/lib/usbhid/src/hidreport.c	(revision 8b68bdfef6c3f6dfcee87b4f33a9f87f225f827d)
@@ -60,7 +60,11 @@
 	};
 	
+	size_t desc_size = 0;
+	const void *desc =
+	    usb_device_get_configuration_descriptor(dev, &desc_size);
+
 	usb_dp_parser_data_t parser_data = {
-		.data = dev->descriptors.configuration,
-		.size = dev->descriptors.configuration_size,
+		.data = desc,
+		.size = desc_size,
 		.arg = NULL
 	};
@@ -70,6 +74,5 @@
 	 */
 	const uint8_t *d =
-	    usb_dp_get_nested_descriptor(&parser, &parser_data,
-	    dev->descriptors.configuration);
+	    usb_dp_get_nested_descriptor(&parser, &parser_data, desc);
 	
 	/*
@@ -77,7 +80,7 @@
 	 */
 	int i = 0;
-	while (d != NULL && i < dev->interface_no) {
+	while (d != NULL && i < usb_device_get_iface_number(dev)) {
 		d = usb_dp_get_sibling_descriptor(&parser, &parser_data,
-		    dev->descriptors.configuration, d);
+		    desc, d);
 		++i;
 	}
@@ -85,5 +88,5 @@
 	if (d == NULL) {
 		usb_log_error("The %d. interface descriptor not found!\n",
-		    dev->interface_no);
+		    usb_device_get_iface_number(dev));
 		return ENOENT;
 	}
@@ -135,7 +138,7 @@
 	 * Get the descriptor from the device.
 	 */
-	int rc = usb_request_get_descriptor(&dev->ctrl_pipe,
+	int rc = usb_request_get_descriptor(usb_device_get_default_pipe(dev),
 	    USB_REQUEST_TYPE_STANDARD, USB_REQUEST_RECIPIENT_INTERFACE,
-	    USB_DESCTYPE_HID_REPORT, 0, dev->interface_no,
+	    USB_DESCTYPE_HID_REPORT, 0, usb_device_get_iface_number(dev),
 	    *report_desc, length, &actual_size);
 
