Index: uspace/app/bdsh/cmds/modules/help/help.c
===================================================================
--- uspace/app/bdsh/cmds/modules/help/help.c	(revision a9db9b8babcb4c40c23e0ec83272bbf7b11d9c87)
+++ uspace/app/bdsh/cmds/modules/help/help.c	(revision 9e2e7152bfdcdd38fe61aacc099ab917d7d6cfaf)
@@ -45,8 +45,7 @@
 extern const char *progname;
 
-#define HELP_IS_COMMANDS	2
-#define HELP_IS_MODULE		1
-#define HELP_IS_BUILTIN		0
-#define HELP_IS_RUBBISH 	-1
+#define HELP_IS_MODULE   1
+#define HELP_IS_BUILTIN  0
+#define HELP_IS_RUBBISH  -1
 
 volatile int mod_switch = -1;
@@ -56,7 +55,4 @@
 {
 	int rc = HELP_IS_RUBBISH;
-
-	if (str_cmp(cmd, "commands") == 0)
-		return HELP_IS_COMMANDS;
 
 	rc = is_builtin(cmd);
@@ -94,11 +90,44 @@
 }
 
-static void help_commands(void)
+int cmd_help(char *argv[])
 {
+	module_t *mod;
 	builtin_t *cmd;
-	module_t *mod;
-	unsigned int i;
+	unsigned int i = 0;
+	int rc = 0;
+	int argc;
+	int level = HELP_SHORT;
 
-	printf("\n  Bdsh built-in commands:\n");
+	argc = cli_count_args(argv);
+
+	if (argc > 3) {
+		printf("\nToo many arguments to `%s', try:\n", cmdname);
+		help_cmd_help(HELP_SHORT);
+		return CMD_FAILURE;
+	}
+
+	if (argc == 3) {
+		if (!str_cmp("extended", argv[2]))
+			level = HELP_LONG;
+		else
+			level = HELP_SHORT;
+	}
+
+	if (argc > 1) {
+		rc = is_mod_or_builtin(argv[1]);
+		switch (rc) {
+		case HELP_IS_RUBBISH:
+			printf("Invalid command %s\n", argv[1]);
+			return CMD_FAILURE;
+		case HELP_IS_MODULE:
+			help_module(mod_switch, level);
+			return CMD_SUCCESS;
+		case HELP_IS_BUILTIN:
+			help_builtin(mod_switch, level);
+			return CMD_SUCCESS;
+		}
+	}
+
+	printf("\n  Available commands are:\n");
 	printf("  ------------------------------------------------------------\n");
 
@@ -125,73 +154,4 @@
 	printf("\n  Try %s %s for more information on how `%s' works.\n\n",
 		cmdname, cmdname, cmdname);
-}
-
-/** Display survival tips. ('help' without arguments) */
-static void help_survival(void)
-{
-	printf("Don't panic!\n\n");
-
-	printf("This is Bdsh, the Brain dead shell, currently "
-	    "the primary user interface to HelenOS. Bdsh allows you to enter "
-	    "commands and supports history (Up, Down arrow keys), "
-	    "line editing (Left Arrow, Right Arrow, Home, End, Backspace), "
-	    "selection (Shift + movement keys), copy and paste (Ctrl-C, "
-	    "Ctrl-V), similar to common desktop environments.\n\n");
-
-	printf("The most basic filesystem commands are Bdsh builtins. Type "
-	    "'help commands' [Enter] to see the list of Bdsh builtin commands. "
-	    "Other commands are external executables located in the /app and "
-	    "/srv directories. Type 'ls /app' [Enter] and 'ls /srv' [Enter] "
-	    "to see their list. You can execute an external command simply "
-	    "by entering its name (e.g. type 'tetris' [Enter]).\n\n");
-
-	printf("HelenOS has virtual consoles (VCs). You can switch between "
-	    "these using the F1-F11 keys.\n\n");
-
-	printf("This is but a small glimpse of what you can do with HelenOS. "
-	    "To learn more please point your browser to the HelenOS User's "
-	    "Guide: http://trac.helenos.org/trac.fcgi/wiki/UsersGuide\n\n");
-}
-
-int cmd_help(char *argv[])
-{
-	int rc = 0;
-	int argc;
-	int level = HELP_SHORT;
-
-	argc = cli_count_args(argv);
-
-	if (argc > 3) {
-		printf("\nToo many arguments to `%s', try:\n", cmdname);
-		help_cmd_help(HELP_SHORT);
-		return CMD_FAILURE;
-	}
-
-	if (argc == 3) {
-		if (!str_cmp("extended", argv[2]))
-			level = HELP_LONG;
-		else
-			level = HELP_SHORT;
-	}
-
-	if (argc > 1) {
-		rc = is_mod_or_builtin(argv[1]);
-		switch (rc) {
-		case HELP_IS_RUBBISH:
-			printf("Invalid topic %s\n", argv[1]);
-			return CMD_FAILURE;
-		case HELP_IS_COMMANDS:
-			help_commands();
-			return CMD_SUCCESS;
-		case HELP_IS_MODULE:
-			help_module(mod_switch, level);
-			return CMD_SUCCESS;
-		case HELP_IS_BUILTIN:
-			help_builtin(mod_switch, level);
-			return CMD_SUCCESS;
-		}
-	}
-
-	help_survival();
 
 	return CMD_SUCCESS;
Index: uspace/app/bdsh/scli.c
===================================================================
--- uspace/app/bdsh/scli.c	(revision a9db9b8babcb4c40c23e0ec83272bbf7b11d9c87)
+++ uspace/app/bdsh/scli.c	(revision 9e2e7152bfdcdd38fe61aacc099ab917d7d6cfaf)
@@ -89,4 +89,7 @@
 		exit(EXIT_FAILURE);
 
+	printf("Welcome to %s - %s\nType `help' at any time for usage information.\n",
+		progname, PACKAGE_STRING);
+
 	while (!cli_quit) {
 		get_input(&usr);
Index: uspace/app/getterm/Makefile
===================================================================
--- uspace/app/getterm/Makefile	(revision a9db9b8babcb4c40c23e0ec83272bbf7b11d9c87)
+++ uspace/app/getterm/Makefile	(revision 9e2e7152bfdcdd38fe61aacc099ab917d7d6cfaf)
@@ -34,6 +34,5 @@
 SOURCES = \
 	getterm.c \
-	version.c \
-	welcome.c
+	version.c
 
 include $(USPACE_PREFIX)/Makefile.common
Index: uspace/app/getterm/getterm.c
===================================================================
--- uspace/app/getterm/getterm.c	(revision a9db9b8babcb4c40c23e0ec83272bbf7b11d9c87)
+++ uspace/app/getterm/getterm.c	(revision 9e2e7152bfdcdd38fe61aacc099ab917d7d6cfaf)
@@ -43,5 +43,4 @@
 #include <errno.h>
 #include "version.h"
-#include "welcome.h"
 
 #define APP_NAME  "getterm"
@@ -49,5 +48,5 @@
 static void usage(void)
 {
-	printf("Usage: %s <terminal> [-w] <command> [<arguments...>]\n", APP_NAME);
+	printf("Usage: %s <terminal> <path>\n", APP_NAME);
 }
 
@@ -74,39 +73,29 @@
 }
 
+static task_id_t spawn(const char *fname)
+{
+	task_id_t id;
+	int rc;
+	
+	rc = task_spawnl(&id, fname, fname, NULL);
+	if (rc != EOK) {
+		printf("%s: Error spawning %s (%s)\n", APP_NAME, fname,
+		    str_error(rc));
+		return 0;
+	}
+	
+	return id;
+}
+
 int main(int argc, char *argv[])
 {
-	int rc;
-	task_exit_t texit;
-	int retval;
-	task_id_t id;
-	char *fname, *term;
-	char **cmd_args;
-	bool print_wmsg;
-
-	++argv; --argc;
-	if (argc < 1) {
+	if (argc < 3) {
 		usage();
 		return -1;
 	}
-
-	if (str_cmp(*argv, "-w") == 0) {
-		print_wmsg = true;
-		++argv; --argc;
-	} else {
-		print_wmsg = false;
-	}
-
-	if (argc < 2) {
-		usage();
-		return -1;
-	}
-
-	term = *argv++;
-	fname = *argv;
-	cmd_args = argv;
 	
-	reopen(&stdin, 0, term, O_RDONLY, "r");
-	reopen(&stdout, 1, term, O_WRONLY, "w");
-	reopen(&stderr, 2, term, O_WRONLY, "w");
+	reopen(&stdin, 0, argv[1], O_RDONLY, "r");
+	reopen(&stdout, 1, argv[1], O_WRONLY, "w");
+	reopen(&stderr, 2, argv[1], O_WRONLY, "w");
 	
 	/*
@@ -125,23 +114,16 @@
 		return -4;
 	
-	version_print(term);
-	if (print_wmsg)
-		welcome_msg_print();
-
-	rc = task_spawnv(&id, fname, (const char * const *) cmd_args);
-	if (rc != EOK) {
-		printf("%s: Error spawning %s (%s)\n", APP_NAME, fname,
-		    str_error(rc));
-		return -5;
+	version_print(argv[1]);
+	task_id_t id = spawn(argv[2]);
+	
+	if (id != 0) {
+		task_exit_t texit;
+		int retval;
+		task_wait(id, &texit, &retval);
+		
+		return 0;
 	}
-
-	rc = task_wait(id, &texit, &retval);
-	if (rc != EOK) {
-		printf("%s: Error waiting for %s (%s)\n", APP_NAME, fname,
-		    str_error(rc));
-		return -6;
-	}
-
-	return 0;
+	
+	return -5;
 }
 
Index: uspace/app/getterm/version.c
===================================================================
--- uspace/app/getterm/version.c	(revision a9db9b8babcb4c40c23e0ec83272bbf7b11d9c87)
+++ uspace/app/getterm/version.c	(revision 9e2e7152bfdcdd38fe61aacc099ab917d7d6cfaf)
@@ -61,5 +61,5 @@
 	printf("HelenOS release %s (%s)%s%s\n", release, name, revision, timestamp);
 	printf("Running on %s (%s)\n", arch, term);
-	printf("Copyright (c) 2001-2010 HelenOS project\n\n");
+	printf("Copyright (c) 2001-2009 HelenOS project\n\n");
 }
 
Index: pace/app/getterm/welcome.c
===================================================================
--- uspace/app/getterm/welcome.c	(revision a9db9b8babcb4c40c23e0ec83272bbf7b11d9c87)
+++ 	(revision )
@@ -1,48 +1,0 @@
-/*
- * Copyright (c) 2010 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** @addtogroup getterm
- * @{
- */
-/**
- * @file
- */
-
-#include <stdio.h>
-#include "welcome.h"
-
-/** Welcome message and survival tips. */
-void welcome_msg_print(void)
-{
-	printf("Welcome to HelenOS!\n");
-	printf("http://www.helenos.org/\n\n");
-	printf("Type 'help' [Enter] to see a few survival tips.\n\n");
-}
-
-/** @}
- */
Index: pace/app/getterm/welcome.h
===================================================================
--- uspace/app/getterm/welcome.h	(revision a9db9b8babcb4c40c23e0ec83272bbf7b11d9c87)
+++ 	(revision )
@@ -1,44 +1,0 @@
-/*
- * Copyright (c) 2010 Jiri Svoboda
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** @addtogroup getterm
- * @{
- */
-/**
- * @file
- */
-
-#ifndef WELCOME_H__
-#define WELCOME_H__
-
-extern void welcome_msg_print(void);
-
-#endif
-
-/** @}
- */
Index: uspace/app/init/init.c
===================================================================
--- uspace/app/init/init.c	(revision a9db9b8babcb4c40c23e0ec83272bbf7b11d9c87)
+++ uspace/app/init/init.c	(revision 9e2e7152bfdcdd38fe61aacc099ab917d7d6cfaf)
@@ -200,5 +200,5 @@
 }
 
-static void getterm(const char *dev, const char *app, bool wmsg)
+static void getterm(const char *dev, const char *app)
 {
 	char term[DEVMAP_NAME_MAXLEN];
@@ -218,18 +218,8 @@
 	}
 	
-	if (wmsg) {
-		rc = task_spawnl(NULL, APP_GETTERM, APP_GETTERM, "-w", term,
-		    app, NULL);
-		if (rc != EOK) {
-			printf("%s: Error spawning %s -w %s %s (%s)\n", NAME,
-			    APP_GETTERM, term, app, str_error(rc));
-		}
-	} else {
-		rc = task_spawnl(NULL, APP_GETTERM, APP_GETTERM, term, app,
-		    NULL);
-		if (rc != EOK) {
-			printf("%s: Error spawning %s %s %s (%s)\n", NAME,
-			    APP_GETTERM, term, app, str_error(rc));
-		}
+	rc = task_spawnl(NULL, APP_GETTERM, APP_GETTERM, term, app, NULL);
+	if (rc != EOK) {
+		printf("%s: Error spawning %s %s %s (%s)\n", NAME,
+		    APP_GETTERM, term, app, str_error(rc));
 	}
 }
@@ -305,11 +295,11 @@
 #endif
 	
-	getterm("term/vc0", "/app/bdsh", true);
-	getterm("term/vc1", "/app/bdsh", false);
-	getterm("term/vc2", "/app/bdsh", false);
-	getterm("term/vc3", "/app/bdsh", false);
-	getterm("term/vc4", "/app/bdsh", false);
-	getterm("term/vc5", "/app/bdsh", false);
-	getterm("term/vc6", "/app/klog", false);
+	getterm("term/vc0", "/app/bdsh");
+	getterm("term/vc1", "/app/bdsh");
+	getterm("term/vc2", "/app/bdsh");
+	getterm("term/vc3", "/app/bdsh");
+	getterm("term/vc4", "/app/bdsh");
+	getterm("term/vc5", "/app/bdsh");
+	getterm("term/vc6", "/app/klog");
 	
 	return 0;
