Index: uspace/app/bdsh/cmds/modules/cat/cat.h
===================================================================
--- uspace/app/bdsh/cmds/modules/cat/cat.h	(revision e367f5b8b2a14826b661056826576cefdb1419c1)
+++ uspace/app/bdsh/cmds/modules/cat/cat.h	(revision 1dbe4654725ea80d44d0844ebe3093b1bbbcb4dd)
@@ -4,6 +4,4 @@
 /* Prototypes for the cat command, excluding entry points */
 
-static unsigned int cat_file(const char *, size_t, bool, off64_t, off64_t, bool);
-
 #endif /* CAT_H */
 
Index: uspace/app/bdsh/cmds/modules/help/help.h
===================================================================
--- uspace/app/bdsh/cmds/modules/help/help.h	(revision e367f5b8b2a14826b661056826576cefdb1419c1)
+++ uspace/app/bdsh/cmds/modules/help/help.h	(revision 1dbe4654725ea80d44d0844ebe3093b1bbbcb4dd)
@@ -3,5 +3,4 @@
 
 /* Prototypes for the help command (excluding entry points) */
-static int is_mod_or_builtin(char *);
 
 #endif
Index: uspace/app/bdsh/cmds/modules/mkdir/mkdir.h
===================================================================
--- uspace/app/bdsh/cmds/modules/mkdir/mkdir.h	(revision e367f5b8b2a14826b661056826576cefdb1419c1)
+++ uspace/app/bdsh/cmds/modules/mkdir/mkdir.h	(revision 1dbe4654725ea80d44d0844ebe3093b1bbbcb4dd)
@@ -4,5 +4,4 @@
 /* Prototypes for the mkdir command, excluding entry points */
 
-static unsigned int create_directory(const char *, unsigned int);
 #endif /* MKDIR_H */
 
Index: uspace/app/bdsh/cmds/modules/rm/rm.c
===================================================================
--- uspace/app/bdsh/cmds/modules/rm/rm.c	(revision e367f5b8b2a14826b661056826576cefdb1419c1)
+++ uspace/app/bdsh/cmds/modules/rm/rm.c	(revision 1dbe4654725ea80d44d0844ebe3093b1bbbcb4dd)
@@ -46,6 +46,4 @@
 #define RM_VERSION "0.0.1"
 
-static rm_job_t rm;
-
 static struct option const long_options[] = {
 	{ "help", no_argument, 0, 'h' },
@@ -57,4 +55,38 @@
 };
 
+/* Return values for rm_scope() */
+#define RM_BOGUS 0
+#define RM_FILE  1
+#define RM_DIR   2
+
+/* Flags for rm_update() */
+#define _RM_ENTRY   0
+#define _RM_ADVANCE 1
+#define _RM_REWIND  2
+#define _RM_EXIT    3
+
+/* A simple job structure */
+typedef struct {
+	/* Options set at run time */
+	unsigned int force;      /* -f option */
+	unsigned int recursive;  /* -r option */
+	unsigned int safe;       /* -s option */
+
+	/* Keeps track of the job in progress */
+	int advance; /* How far deep we've gone since entering */
+	DIR *entry;  /* Entry point to the tree being removed */
+	char *owd;   /* Where we were when we invoked rm */
+	char *cwd;   /* Current directory being transversed */
+	char *nwd;   /* Next directory to be transversed */
+
+	/* Counters */
+	int f_removed; /* Number of files unlinked */
+	int d_removed; /* Number of directories unlinked */
+} rm_job_t;
+
+static rm_job_t rm;
+
+static unsigned int rm_recursive(const char *);
+
 static unsigned int rm_start(rm_job_t *rm)
 {
@@ -95,4 +127,33 @@
 	if (NULL != rm->cwd)
 		free(rm->cwd);
+}
+
+static unsigned int rm_single(const char *path)
+{
+	if (unlink(path)) {
+		cli_error(CL_EFAIL, "rm: could not remove file %s", path);
+		return 1;
+	}
+	return 0;
+}
+
+static unsigned int rm_scope(const char *path)
+{
+	int fd;
+	DIR *dirp;
+
+	dirp = opendir(path);
+	if (dirp) {
+		closedir(dirp);
+		return RM_DIR;
+	}
+
+	fd = open(path, O_RDONLY);
+	if (fd > 0) {
+		close(fd);
+		return RM_FILE;
+	}
+
+	return RM_BOGUS;
 }
 
@@ -154,33 +215,4 @@
 
 	return ret + 1;
-}
-
-static unsigned int rm_single(const char *path)
-{
-	if (unlink(path)) {
-		cli_error(CL_EFAIL, "rm: could not remove file %s", path);
-		return 1;
-	}
-	return 0;
-}
-
-static unsigned int rm_scope(const char *path)
-{
-	int fd;
-	DIR *dirp;
-
-	dirp = opendir(path);
-	if (dirp) {
-		closedir(dirp);
-		return RM_DIR;
-	}
-
-	fd = open(path, O_RDONLY);
-	if (fd > 0) {
-		close(fd);
-		return RM_FILE;
-	}
-
-	return RM_BOGUS;
 }
 
Index: uspace/app/bdsh/cmds/modules/rm/rm.h
===================================================================
--- uspace/app/bdsh/cmds/modules/rm/rm.h	(revision e367f5b8b2a14826b661056826576cefdb1419c1)
+++ uspace/app/bdsh/cmds/modules/rm/rm.h	(revision 1dbe4654725ea80d44d0844ebe3093b1bbbcb4dd)
@@ -2,41 +2,5 @@
 #define RM_H
 
-/* Return values for rm_scope() */
-#define RM_BOGUS 0
-#define RM_FILE  1
-#define RM_DIR   2
-
-/* Flags for rm_update() */
-#define _RM_ENTRY   0
-#define _RM_ADVANCE 1
-#define _RM_REWIND  2
-#define _RM_EXIT    3
-
-/* A simple job structure */
-typedef struct {
-	/* Options set at run time */
-	unsigned int force;      /* -f option */
-	unsigned int recursive;  /* -r option */
-	unsigned int safe;       /* -s option */
-
-	/* Keeps track of the job in progress */
-	int advance; /* How far deep we've gone since entering */
-	DIR *entry;  /* Entry point to the tree being removed */
-	char *owd;   /* Where we were when we invoked rm */
-	char *cwd;   /* Current directory being transversed */
-	char *nwd;   /* Next directory to be transversed */
-
-	/* Counters */
-	int f_removed; /* Number of files unlinked */
-	int d_removed; /* Number of directories unlinked */
-} rm_job_t;
-
-
 /* Prototypes for the rm command, excluding entry points */
-static unsigned int rm_start(rm_job_t *);
-static void rm_end(rm_job_t *rm);
-static unsigned int rm_recursive(const char *);
-static unsigned int rm_single(const char *);
-static unsigned int rm_scope(const char *);
 
 #endif /* RM_H */
Index: uspace/app/bdsh/cmds/modules/sleep/sleep.c
===================================================================
--- uspace/app/bdsh/cmds/modules/sleep/sleep.c	(revision e367f5b8b2a14826b661056826576cefdb1419c1)
+++ uspace/app/bdsh/cmds/modules/sleep/sleep.c	(revision 1dbe4654725ea80d44d0844ebe3093b1bbbcb4dd)
@@ -27,6 +27,8 @@
  */
 
+#include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <unistd.h>
 #include "config.h"
 #include "util.h"
@@ -41,7 +43,68 @@
 void help_cmd_sleep(unsigned int level)
 {
-	printf("This is the %s help for '%s'.\n",
-		level ? EXT_HELP : SHORT_HELP, cmdname);
+	if (level == HELP_SHORT) {
+		printf("`%s' pauses for a given time interval\n", cmdname);
+	} else {
+		help_cmd_sleep(HELP_SHORT);
+		printf(
+		    "Usage:  %s <duration>\n"
+		    "The duration is a decimal number of seconds.\n",
+		    cmdname);
+	}
+
 	return;
+}
+
+/** Convert string containing decimal seconds to useconds_t.
+ *
+ * @param nptr   Pointer to string.
+ * @param result Result of the conversion.
+ * @return EOK if conversion was successful.
+ */
+static int decimal_to_useconds(const char *nptr, useconds_t *result)
+{
+	int ret;
+	uint64_t whole_seconds;
+	uint64_t frac_seconds;
+	char *endptr;
+
+	/* Check for whole seconds */
+	if (*nptr == '.') {
+		whole_seconds = 0;
+		endptr = (char *)nptr;
+	} else {
+		ret = str_uint64_t(nptr, &endptr, 10, false, &whole_seconds);
+		if (ret != EOK)
+			return ret;
+	}
+
+	/* Check for fractional seconds */
+	if (*endptr == '\0') {
+		frac_seconds = 0;
+	} else if (*endptr == '.' && endptr[1] == '\0') {
+		frac_seconds = 0;
+	} else if (*endptr == '.') {
+		nptr = endptr + 1;
+		ret = str_uint64_t(nptr, &endptr, 10, true, &frac_seconds);
+		if (ret != EOK)
+			return ret;
+
+		int ndigits = endptr - nptr;
+		for (; ndigits < 6; ndigits++) 
+			frac_seconds *= 10;
+		for (; ndigits > 6; ndigits--)
+			frac_seconds /= 10;
+	} else {
+		return EINVAL;
+	}
+
+	/* Check for overflow */
+	useconds_t total = whole_seconds * 1000000 + frac_seconds;
+	if (total / 1000000 != whole_seconds)
+		return EOVERFLOW;
+
+	*result = total;
+
+	return EOK;
 }
 
@@ -49,21 +112,24 @@
 int cmd_sleep(char **argv)
 {
+	int ret;
 	unsigned int argc;
-	unsigned int i;
+	useconds_t duration;
 
 	/* Count the arguments */
-	for (argc = 0; argv[argc] != NULL; argc ++);
+	argc = cli_count_args(argv);
 
-	printf("%s %s\n", TEST_ANNOUNCE, cmdname);
-	printf("%d arguments passed to %s", argc - 1, cmdname);
-
-	if (argc < 2) {
-		printf("\n");
-		return CMD_SUCCESS;
+	if (argc != 2) {
+		printf("%s - incorrect number of arguments. Try `help %s'\n",
+		    cmdname, cmdname);
+		return CMD_FAILURE;
 	}
 
-	printf(":\n");
-	for (i = 1; i < argc; i++)
-		printf("[%d] -> %s\n", i, argv[i]);
+	ret = decimal_to_useconds(argv[1], &duration);
+	if (ret != EOK) {
+		printf("%s - invalid duration.\n", cmdname);
+		return CMD_FAILURE;
+	}
+
+	(void) usleep(duration);
 
 	return CMD_SUCCESS;
