Index: uspace/lib/usb/include/usb/classes/hidparser.h
===================================================================
--- uspace/lib/usb/include/usb/classes/hidparser.h	(revision 175ad13e866672b66c7dbd4eddc9592ae8c46021)
+++ uspace/lib/usb/include/usb/classes/hidparser.h	(revision 681f24b32274b5a4925e0ca4d3d1d5c1ffa25354)
@@ -102,5 +102,7 @@
 	
 	/** */	
-	link_t link;
+	link_t link; /* list */
+
+	link_t head; /* head of list of usage paths */
 
 } usb_hid_report_path_t;
Index: uspace/lib/usb/src/hidparser.c
===================================================================
--- uspace/lib/usb/src/hidparser.c	(revision 175ad13e866672b66c7dbd4eddc9592ae8c46021)
+++ uspace/lib/usb/src/hidparser.c	(revision 681f24b32274b5a4925e0ca4d3d1d5c1ffa25354)
@@ -39,4 +39,5 @@
 #include <mem.h>
 #include <usb/debug.h>
+#include <assert.h>
 
 /** The new report item flag. Used to determine when the item is completly
@@ -139,18 +140,17 @@
 	if(path_it == &report->collection_paths) {
 		path = usb_hid_report_path_clone(report_item->usage_path);			
-
-		usb_log_debug("PUVODNI: \n");
+		list_initialize(&path->link);
+
+		list_append(&path->link, &report->collection_paths);					
+		
 		usb_hid_print_usage_path (report_item->usage_path);
-		usb_log_debug("KLON - path: \n");
-		usb_hid_print_usage_path (path);		
-		usb_log_debug("KLON - clone: \n");
-		usb_hid_print_usage_path (usb_hid_report_path_clone(report_item->usage_path));		
-
-		list_append(&path->link, &report->collection_paths);			
-
-		// PROC SE KRUVA VLOZI NESMYSLY??
-		usb_log_debug("VLOZENO: \n");
-		usb_hid_print_usage_path (list_get_instance(report->collection_paths.prev, usb_hid_report_path_t, link));
-		usb_log_debug("\n");
+		usb_hid_print_usage_path (path);
+		usb_hid_print_usage_path(list_get_instance(report->collection_paths.prev, usb_hid_report_path_t, link));
+
+		assert(usb_hid_report_compare_usage_path (report_item->usage_path, 
+        	list_get_instance(report->collection_paths.prev, 
+	                          usb_hid_report_path_t, link), 
+			USB_HID_PATH_COMPARE_STRICT) == EOK);
+
 		report->collection_paths_count++;
 	}
@@ -1135,8 +1135,8 @@
 				}
 
-				report_link = report_path->link.next;
-				path_link = path->link.next;
+				report_link = report_path->head.next;
+				path_link = path->head.next;
 			
-				while((report_link != &report_path->link) && (path_link != &path->link)) {
+				while((report_link != &report_path->head) && (path_link != &path->head)) {
 					report_item = list_get_instance(report_link, usb_hid_report_usage_path_t, link);
 					path_item = list_get_instance(path_link, usb_hid_report_usage_path_t, link);		
@@ -1152,5 +1152,5 @@
 				}
 
-				if((report_link == &report_path->link) && (path_link == &path->link)) {
+				if((report_link == &report_path->head) && (path_link == &path->head)) {
 					return EOK;
 				}
@@ -1162,12 +1162,12 @@
 		/* compare with only the end of path*/
 		case USB_HID_PATH_COMPARE_END:
-				report_link = report_path->link.prev;
-				path_link = path->link.prev;
-
-				if(list_empty(&path->link)){
+				report_link = report_path->head.prev;
+				path_link = path->head.prev;
+
+				if(list_empty(&path->head)){
 					return EOK;
 				}
 			
-				while((report_link != &report_path->link) && (path_link != &path->link)) {
+				while((report_link != &report_path->head) && (path_link != &path->head)) {
 					report_item = list_get_instance(report_link, usb_hid_report_usage_path_t, link);
 					path_item = list_get_instance(path_link, usb_hid_report_usage_path_t, link);		
@@ -1183,5 +1183,5 @@
 				}
 
-				if(path_link == &path->link) {
+				if(path_link == &path->head) {
 					return EOK;
 				}
