Index: uspace/drv/usbhid/descdump.c
===================================================================
--- uspace/drv/usbhid/descdump.c	(revision 0f21c0c8a600adbbfbe315431bff13a9695a1692)
+++ uspace/drv/usbhid/descdump.c	(revision 11f1817b1d266260803392d952a0e1fac3dab76f)
@@ -35,4 +35,6 @@
 
 #include <usb/classes/hid.h>
+#include <stdio.h>
+#include <assert.h>
 
 #include "descdump.h"
Index: uspace/drv/usbhid/descparser.c
===================================================================
--- uspace/drv/usbhid/descparser.c	(revision 0f21c0c8a600adbbfbe315431bff13a9695a1692)
+++ uspace/drv/usbhid/descparser.c	(revision 11f1817b1d266260803392d952a0e1fac3dab76f)
@@ -36,4 +36,5 @@
 #include <errno.h>
 #include <stdint.h>
+#include <stdio.h>
 #include <usb/usb.h>
 #include <usb/classes/hid.h>
Index: uspace/drv/usbhid/hid.h
===================================================================
--- uspace/drv/usbhid/hid.h	(revision 0f21c0c8a600adbbfbe315431bff13a9695a1692)
+++ uspace/drv/usbhid/hid.h	(revision 11f1817b1d266260803392d952a0e1fac3dab76f)
@@ -38,5 +38,5 @@
 
 #include <usb/classes/hid.h>
-#include <driver.h>
+#include <ddf/driver.h>
 #include <usb/pipes.h>
 
@@ -67,5 +67,5 @@
  */
 typedef struct {
-	device_t *device;
+	ddf_dev_t *device;
 	usb_hid_configuration_t *conf;
 	usb_hid_report_parser_t *parser;
Index: uspace/drv/usbhid/main.c
===================================================================
--- uspace/drv/usbhid/main.c	(revision 0f21c0c8a600adbbfbe315431bff13a9695a1692)
+++ uspace/drv/usbhid/main.c	(revision 11f1817b1d266260803392d952a0e1fac3dab76f)
@@ -36,5 +36,5 @@
  */
 
-#include <driver.h>
+#include <ddf/driver.h>
 #include <ipc/driver.h>
 #include <ipc/kbd.h>
@@ -72,6 +72,6 @@
 };
 
-static void default_connection_handler(device_t *, ipc_callid_t, ipc_call_t *);
-static device_ops_t keyboard_ops = {
+static void default_connection_handler(ddf_fun_t *, ipc_callid_t, ipc_call_t *);
+static ddf_dev_ops_t keyboard_ops = {
 	.default_handler = default_connection_handler
 };
@@ -85,5 +85,5 @@
  * @param icall Call data.
  */
-void default_connection_handler(device_t *dev,
+void default_connection_handler(ddf_fun_t *fun,
     ipc_callid_t icallid, ipc_call_t *icall)
 {
@@ -413,5 +413,5 @@
 }
 
-static usb_hid_dev_kbd_t *usbkbd_init_device(device_t *dev)
+static usb_hid_dev_kbd_t *usbkbd_init_device(ddf_dev_t *dev)
 {
 	int rc;
@@ -554,5 +554,5 @@
 	}
 
-	device_t *dev = (device_t *)arg;
+	ddf_dev_t *dev = (ddf_dev_t *)arg;
 
 	// initialize device (get and process descriptors, get address, etc.)
@@ -568,5 +568,5 @@
 }
 
-static int usbkbd_add_device(device_t *dev)
+static int usbkbd_add_device(ddf_dev_t *dev)
 {
 	/* For now, fail immediately. */
@@ -590,4 +590,17 @@
 
 	/*
+	 * Create default function.
+	 */
+	// FIXME - check for errors
+	ddf_fun_t *kbd_fun = ddf_fun_create(dev, fun_exposed, "keyboard");
+	assert(kbd_fun != NULL);
+	kbd_fun->ops = &keyboard_ops;
+
+	int rc = ddf_fun_bind(kbd_fun);
+	assert(rc == EOK);
+	rc = ddf_fun_add_to_class(kbd_fun, "keyboard");
+	assert(rc == EOK);
+
+	/*
 	 * Create new fibril for handling this keyboard
 	 */
@@ -599,7 +612,8 @@
 	fibril_add_ready(fid);
 
-	dev->ops = &keyboard_ops;
-
-	add_device_to_class(dev, "keyboard");
+	//dev->ops = &keyboard_ops;
+	(void)keyboard_ops;
+
+	//add_device_to_class(dev, "keyboard");
 
 	/*
@@ -621,5 +635,5 @@
 {
 	usb_log_enable(USB_LOG_LEVEL_INFO, "usbhid");
-	return driver_main(&kbd_driver);
+	return ddf_driver_main(&kbd_driver);
 }
 
