diff --git a/arch/x86/src/common/up_initialize.c b/arch/x86/src/common/up_initialize.c
index 9ce9523edc8be39a2592498a5375559fa1373a6a..0ceeddbb6b1bb4f4e28e8d5498646ff5af738c61 100644
--- a/arch/x86/src/common/up_initialize.c
+++ b/arch/x86/src/common/up_initialize.c
@@ -124,7 +124,7 @@ void up_initialize(void)
 
   up_irqinitialize();
 
-  /* Initialize the DMA subsystem if the weak function stm32_dmainitialize has been
+  /* Initialize the DMA subsystem if the weak function up_dmainitialize has been
    * brought into the build
    */
 
diff --git a/configs/vsn/nsh/defconfig b/configs/vsn/nsh/defconfig
index 8e74c4c58a99dff08a210a3cd50e34bdf38c526a..2d3e5b2b3deb40e8285798abb39c37c3753138dd 100755
--- a/configs/vsn/nsh/defconfig
+++ b/configs/vsn/nsh/defconfig
@@ -848,6 +848,7 @@ CONFIG_BUILTIN_APP_START=
 #   apps from command line. See apps/README for more information.
 #
 CONFIG_EXAMPLES_NSH_BUILTIN_APPS=y
+CONFIG_SCHED_WAITPID=y
 
 #
 ########################################################################
diff --git a/examples/nsh/nsh_main.c b/examples/nsh/nsh_main.c
index a13c6dae020c51d0af71ce3ef832d6614629ecd5..84ef2bdfdde287d4ff7d963d577250132cdf5495 100644
--- a/examples/nsh/nsh_main.c
+++ b/examples/nsh/nsh_main.c
@@ -499,23 +499,23 @@ static int nsh_execute(FAR struct nsh_vtbl_s *vtbl, int argc, char *argv[])
        if ((ret = exec_nuttapp(cmd, argv)) < 0)
          {
             if (errno != ENOENT)
-			  {
-			    return -errno;
+              {
+                return -errno;
               }
          }
        else
          {
-           /* Is the background mode or foreground mode desired? */
-#if 0
-           if (argc > 1 && strcmp(argv[argc-1], "&") == 0)
-             {
-             }
-           else
-             {
-               waitpid(ret, );
-             }
+#ifdef CONFIG_SCHED_WAITPID
+            if (vtbl->np.np_bg == false)
+              {
+                waitpid(ret, NULL, 0);
+              }
+            else
 #endif
-           return ret;
+              {
+                nsh_output(vtbl, "%s [%d:%d]\n", cmd, ret, 128);    // \todo get priority from new pid?
+                return ret;
+              }
          }
      }
 #endif
@@ -1176,6 +1176,7 @@ int nsh_parse(FAR struct nsh_vtbl_s *vtbl, char *cmdline)
     }
 #endif
 
+
   /* Check if the output was re-directed using > or >> */
 
   if (argc > 2)
@@ -1229,10 +1230,16 @@ int nsh_parse(FAR struct nsh_vtbl_s *vtbl, char *cmdline)
       nsh_output(vtbl, g_fmttoomanyargs, cmd);
     }
 
-  /* Handle the case where the command is executed in background */
+  /* Handle the case where the command is executed in background.
+   * However is app is to be started as nuttapp new process will
+   * be created anyway, so skip this step. */
 
 #ifndef CONFIG_EXAMPLES_NSH_DISABLEBG
-  if (vtbl->np.np_bg)
+  if (vtbl->np.np_bg
+#ifdef CONFIG_EXAMPLES_NSH_BUILTIN_APPS
+      && nuttapp_isavail(argv[0]) < 0     
+#endif
+  )
     {
       struct sched_param param;
       struct nsh_vtbl_s *bkgvtbl;
diff --git a/include/nuttx/nuttapp.h b/include/nuttx/nuttapp.h
index a8b6e8397c6a6248cb6b5ea27fef682f4b4a20ab..1d649728387700ac7f3eb32660916081cb32f563 100644
--- a/include/nuttx/nuttapp.h
+++ b/include/nuttx/nuttapp.h
@@ -72,49 +72,65 @@ extern "C" {
 #define EXTERN extern
 #endif
 
+
 /****************************************************************************
- * Name: execute builtin NuttX application
+ * Name: check for availability of builtin NuttX application
  *
  * Description:
- *   Executes builtin application registerred during compile time.
- *   New application is run in a separate task context (and thread).
+ *   Checks for availabiliy of application registerred during compile time.
  *
  * Input Parameter:
  *   filename - Name of the linked-in binary to be started.
- *   argv     - Argument list
  *
  * Returned Value:
  *   This is an end-user function, so it follows the normal convention:
- *   Returns the PID of the exec'ed module.  On failure, it.returns
- *   -1 (ERROR) and sets errno appropriately.
+ *   Returns index of builtin application. If it is not found then it
+ *   returns -1 (ERROR) and sets errno appropriately.
  *
- * Implementation within drivers/bchsbin
  ****************************************************************************/
 
-EXTERN int exec_nuttapp(FAR const char *appname, FAR const char *argv[]);
+EXTERN int nuttapp_isavail(FAR const char *appname);
+
 
 /****************************************************************************
- * Name: execute a nutt shell command
+ * Name: get name of built-in application
  *
  * Description:
- *   Invokes an application that is either:
- *    - invokes a nsh script or directly invoke:
- *    - system application list, registerred via XXXX 
- *    - resides in a file system compiled/linked in NXFLAT model
- *    - resides in a non-executable file-system, which is loaded 
- *      into the memory first and then executed.
+ *   Returns pointer to a name of built-in application pointed by the
+ *   index.
  *
  * Input Parameter:
- *   Sheel command.
+ *   index, from 0 and on ...
  *
  * Returned Value:
- *   Zero on success or -1 on error with errno set. 
+ *   Returns valid pointer pointing to the app name if index is valid.
+ *   Otherwise NULL is returned.
  *
- * TODO: move this command to the stdlib.h (?) and
- *   merge implementation with the nuttshell sh command
  ****************************************************************************/
 
-EXTERN FAR int system(const char *command);
+EXTERN const char * nuttapp_getname(int index);
+
+
+/****************************************************************************
+ * Name: execute builtin NuttX application
+ *
+ * Description:
+ *   Executes builtin application registerred during compile time.
+ *   New application is run in a separate task context (and thread).
+ *
+ * Input Parameter:
+ *   filename - Name of the linked-in binary to be started.
+ *   argv     - Argument list
+ *
+ * Returned Value:
+ *   This is an end-user function, so it follows the normal convention:
+ *   Returns the PID of the exec'ed module.  On failure, it.returns
+ *   -1 (ERROR) and sets errno appropriately.
+ *
+ ****************************************************************************/
+
+EXTERN int exec_nuttapp(FAR const char *appname, FAR const char *argv[]);
+
 
 #undef EXTERN
 #if defined(__cplusplus)