Index: uspace/lib/usbhost/include/usb/host/bus.h
===================================================================
--- uspace/lib/usbhost/include/usb/host/bus.h	(revision 9efad54470c08d7d51f40a9febdaa103916aec6f)
+++ uspace/lib/usbhost/include/usb/host/bus.h	(revision 56257bacb801bcdf1177e596773f80cf4e253e5d)
@@ -76,4 +76,5 @@
 	usb_speed_t speed;
 	usb_address_t address;
+	endpoint_t *endpoints [USB_ENDPOINT_MAX];
 
 	/* Managing bus */
@@ -101,5 +102,4 @@
 	int (*reserve_default_address)(bus_t *, usb_speed_t);
 	int (*release_default_address)(bus_t *);
-	int (*reset_toggle)(bus_t *, usb_target_t, toggle_reset_mode_t);
 
 	/* Operations on device */
@@ -108,5 +108,4 @@
 	int (*device_online)(device_t *);			/**< Optional */
 	int (*device_offline)(device_t *);			/**< Optional */
-	endpoint_t *(*device_find_endpoint)(device_t*, usb_target_t, usb_direction_t);
 	endpoint_t *(*endpoint_create)(device_t *, const usb_endpoint_descriptors_t *);
 
@@ -115,7 +114,6 @@
 	int (*endpoint_unregister)(endpoint_t *);
 	void (*endpoint_destroy)(endpoint_t *);			/**< Optional */
-	bool (*endpoint_get_toggle)(endpoint_t *);		/**< Optional */
-	void (*endpoint_set_toggle)(endpoint_t *, bool);	/**< Optional */
-	ssize_t (*endpoint_count_bw) (endpoint_t *, size_t);
+	void (*endpoint_toggle_reset)(endpoint_t *);		/**< Optional */
+	ssize_t (*endpoint_count_bw) (endpoint_t *, size_t);	/**< Optional */
 	usb_transfer_batch_t *(*batch_create)(endpoint_t *);	/**< Optional */
 
@@ -164,5 +162,5 @@
 
 int bus_endpoint_add(device_t *, const usb_endpoint_descriptors_t *, endpoint_t **);
-endpoint_t *bus_find_endpoint(device_t *, usb_target_t, usb_direction_t);
+endpoint_t *bus_find_endpoint(device_t *, usb_endpoint_t);
 int bus_endpoint_remove(endpoint_t *);
 
@@ -170,6 +168,4 @@
 int bus_release_default_address(bus_t *);
 
-int bus_reset_toggle(bus_t *, usb_target_t, bool);
-
 #endif
 /**
Index: uspace/lib/usbhost/include/usb/host/endpoint.h
===================================================================
--- uspace/lib/usbhost/include/usb/host/endpoint.h	(revision 9efad54470c08d7d51f40a9febdaa103916aec6f)
+++ uspace/lib/usbhost/include/usb/host/endpoint.h	(revision 56257bacb801bcdf1177e596773f80cf4e253e5d)
@@ -62,5 +62,5 @@
 	/** Reserved bandwidth. */
 	size_t bandwidth;
-	/** Value of the toggle bit. */
+	/** Value of the toggle bit. Untouched by the library. */
 	unsigned toggle:1;
 	/** The currently active transfer batch. Write using methods, read under guard. */
@@ -107,8 +107,4 @@
 void endpoint_abort(endpoint_t *);
 
-/* Manage the toggle bit */
-extern int endpoint_toggle_get(endpoint_t *);
-extern void endpoint_toggle_set(endpoint_t *, bool);
-
 /* Calculate bandwidth */
 ssize_t endpoint_count_bw(endpoint_t *, size_t);
Index: uspace/lib/usbhost/include/usb/host/usb2_bus.h
===================================================================
--- uspace/lib/usbhost/include/usb/host/usb2_bus.h	(revision 9efad54470c08d7d51f40a9febdaa103916aec6f)
+++ uspace/lib/usbhost/include/usb/host/usb2_bus.h	(revision 56257bacb801bcdf1177e596773f80cf4e253e5d)
@@ -50,16 +50,14 @@
 	bus_t base;			/**< Inheritance - keep this first */
 
-	/* Device bookkeeping */
-	struct {
-		usb_speed_t speed;      /**< Device speed */
-		bool occupied;          /**< The address is in use. */
-		// TODO: This can be stored in usb2_bus-specific device_t
-		list_t endpoint_list;   /**< Store endpoint_t instances */
-	} devices[USB_ADDRESS_COUNT];
+	/** The speed which reserved default address. Invalid unless reserved. */
+	usb_speed_t default_address_speed;
+
+	/** Map of occupied addresses */
+	bool address_occupied [USB_ADDRESS_COUNT];
+	/** The last reserved address */
+	usb_address_t last_address;
 
 	/** Size of the bandwidth pool */
 	size_t free_bw;
-	/** The last reserved address */
-	usb_address_t last_address;
 } usb2_bus_t;
 
Index: uspace/lib/usbhost/include/usb/host/usb_transfer_batch.h
===================================================================
--- uspace/lib/usbhost/include/usb/host/usb_transfer_batch.h	(revision 9efad54470c08d7d51f40a9febdaa103916aec6f)
+++ uspace/lib/usbhost/include/usb/host/usb_transfer_batch.h	(revision 56257bacb801bcdf1177e596773f80cf4e253e5d)
@@ -111,7 +111,4 @@
 void usb_transfer_batch_init(usb_transfer_batch_t *, endpoint_t *);
 
-/** Call after status is known, but before releasing endpoint */
-int usb_transfer_batch_reset_toggle(usb_transfer_batch_t *);
-
 /** Batch finalization. */
 void usb_transfer_batch_abort(usb_transfer_batch_t *);
