Index: uspace/drv/ohci/batch.c
===================================================================
--- uspace/drv/ohci/batch.c	(revision 8dc762e047944f4eeb1b533176031bd8bfe58813)
+++ uspace/drv/ohci/batch.c	(revision f567bcfa21aeafa070516a508a114ce99a13d224)
@@ -73,7 +73,7 @@
 	CHECK_NULL_DISPOSE_RETURN(instance,
 	    "Failed to allocate batch instance.\n");
-	usb_transfer_batch_init(instance, target, transfer_type, speed, max_packet_size,
-	    buffer, NULL, buffer_size, NULL, setup_size, func_in,
-	    func_out, arg, fun, NULL);
+	usb_transfer_batch_init(instance, target, transfer_type, speed,
+	    max_packet_size, buffer, NULL, buffer_size, NULL, setup_size,
+	    func_in, func_out, arg, fun, NULL, NULL);
 
         if (buffer_size > 0) {
Index: uspace/drv/ohci/iface.c
===================================================================
--- uspace/drv/ohci/iface.c	(revision 8dc762e047944f4eeb1b533176031bd8bfe58813)
+++ uspace/drv/ohci/iface.c	(revision f567bcfa21aeafa070516a508a114ce99a13d224)
@@ -164,5 +164,5 @@
 	// TODO use real endpoint here!
 	return usb_endpoint_manager_register_ep(&hc->ep_manager,
-	    address, endpoint, direction, NULL, NULL, 0);
+	    address, endpoint, direction, NULL, 0);
 }
 /*----------------------------------------------------------------------------*/
Index: uspace/drv/uhci-hcd/batch.c
===================================================================
--- uspace/drv/uhci-hcd/batch.c	(revision 8dc762e047944f4eeb1b533176031bd8bfe58813)
+++ uspace/drv/uhci-hcd/batch.c	(revision f567bcfa21aeafa070516a508a114ce99a13d224)
@@ -49,5 +49,5 @@
 	td_t *tds;
 	size_t transfers;
-	usb_device_keeper_t *manager;
+//	usb_device_keeper_t *manager;
 } uhci_batch_t;
 
@@ -87,5 +87,5 @@
     usbhc_iface_transfer_in_callback_t func_in,
     usbhc_iface_transfer_out_callback_t func_out, void *arg,
-    usb_device_keeper_t *manager
+    usb_device_keeper_t *manager, endpoint_t *ep
     )
 {
@@ -105,7 +105,8 @@
 	CHECK_NULL_DISPOSE_RETURN(instance,
 	    "Failed to allocate batch instance.\n");
-	usb_transfer_batch_init(instance, target, transfer_type, speed, max_packet_size,
+	usb_transfer_batch_init(instance, target,
+	    transfer_type, speed, max_packet_size,
 	    buffer, NULL, buffer_size, NULL, setup_size, func_in,
-	    func_out, arg, fun, NULL);
+	    func_out, arg, fun, ep, NULL);
 
 
@@ -114,5 +115,5 @@
 	    "Failed to allocate batch instance.\n");
 	bzero(data, sizeof(uhci_batch_t));
-	data->manager = manager;
+//	data->manager = manager;
 	instance->private_data = data;
 
@@ -180,8 +181,11 @@
 			    instance, i, data->tds[i].status);
 			td_print_status(&data->tds[i]);
-
+			endpoint_toggle_set(instance->ep,
+			    td_toggle(&data->tds[i]));
+/*
 			usb_device_keeper_set_toggle(data->manager,
 			    instance->target, instance->direction,
 			    td_toggle(&data->tds[i]));
+*/
 			if (i > 0)
 				goto substract_ret;
@@ -310,6 +314,7 @@
 
 	const bool low_speed = instance->speed == USB_SPEED_LOW;
-	int toggle = usb_device_keeper_get_toggle(
-	    data->manager, instance->target, instance->direction);
+	int toggle = endpoint_toggle_get(instance->ep);
+//	usb_device_keeper_get_toggle(
+//	    data->manager, instance->target, instance->direction);
 	assert(toggle == 0 || toggle == 1);
 
@@ -342,6 +347,7 @@
 	}
 	td_set_ioc(&data->tds[transfer - 1]);
-	usb_device_keeper_set_toggle(data->manager, instance->target,
-	    instance->direction, toggle);
+	endpoint_toggle_set(instance->ep, toggle);
+//	usb_device_keeper_set_toggle(data->manager, instance->target,
+//	    instance->direction, toggle);
 }
 /*----------------------------------------------------------------------------*/
Index: uspace/drv/uhci-hcd/batch.h
===================================================================
--- uspace/drv/uhci-hcd/batch.h	(revision 8dc762e047944f4eeb1b533176031bd8bfe58813)
+++ uspace/drv/uhci-hcd/batch.h	(revision f567bcfa21aeafa070516a508a114ce99a13d224)
@@ -56,5 +56,6 @@
     usbhc_iface_transfer_out_callback_t func_out,
 		void *arg,
-		usb_device_keeper_t *manager
+		usb_device_keeper_t *manager,
+		endpoint_t *ep
 		);
 
Index: uspace/drv/uhci-hcd/iface.c
===================================================================
--- uspace/drv/uhci-hcd/iface.c	(revision 8dc762e047944f4eeb1b533176031bd8bfe58813)
+++ uspace/drv/uhci-hcd/iface.c	(revision f567bcfa21aeafa070516a508a114ce99a13d224)
@@ -183,5 +183,5 @@
 		endpoint_destroy(ep);
 	} else {
-		usb_device_keeper_add_ep(&hc->manager, address, &ep->same_device_eps);
+		usb_device_keeper_add_ep(&hc->manager, address, ep);
 	}
 	return ret;
@@ -246,5 +246,6 @@
 	usb_transfer_batch_t *batch =
 	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
-	        ep->speed, data, size, NULL, 0, NULL, callback, arg, &hc->manager);
+	        ep->speed, data, size, NULL, 0, NULL, callback, arg,
+		&hc->manager, ep);
 	if (!batch)
 		return ENOMEM;
@@ -304,5 +305,6 @@
 	usb_transfer_batch_t *batch =
 	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
-	        ep->speed, data, size, NULL, 0, callback, NULL, arg, &hc->manager);
+	        ep->speed, data, size, NULL, 0, callback, NULL, arg,
+		&hc->manager, ep);
 	if (!batch)
 		return ENOMEM;
@@ -352,5 +354,5 @@
 	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
 	        ep->speed, data, size, NULL, 0, NULL, callback, arg,
-		&hc->manager);
+		&hc->manager, ep);
 	if (!batch)
 		return ENOMEM;
@@ -399,5 +401,5 @@
 	    batch_get(fun, target, ep->transfer_type, ep->max_packet_size,
 	        ep->speed, data, size, NULL, 0, callback, NULL, arg,
-		&hc->manager);
+		&hc->manager, ep);
 	if (!batch)
 		return ENOMEM;
@@ -448,5 +450,5 @@
 	    batch_get(fun, target, USB_TRANSFER_CONTROL, max_packet_size, speed,
 	        data, size, setup_data, setup_size, NULL, callback, arg,
-	        &hc->manager);
+	        &hc->manager, ep);
 	if (!batch)
 		return ENOMEM;
@@ -495,5 +497,5 @@
 	    batch_get(fun, target, USB_TRANSFER_CONTROL, max_packet_size, speed,
 	        data, size, setup_data, setup_size, callback, NULL, arg,
-		&hc->manager);
+		&hc->manager, ep);
 	if (!batch)
 		return ENOMEM;
