   int i=0;
   int items = 0;
   while( fcnlist[i].name ) {
-    if( fcnlist[i].flags & kFcnFlagHDR ) {
+
+    if( fcnlist[i].flags & kFcnFlagNL ) {
       items = 0;
+    } else if( fcnlist[i].flags & kFcnFlagHDR ) {
       Serial.println( "" );
-      Serial.println( fcnlist[i].name );
+      Serial.print( fcnlist[i].name );
+      items = 0;
     } else {
-      if( 0 == (items % 0)) { Serial.print( "   " ); }
-      Serial.print( fcnlist[i].name );
-      Serial.print( " \t" );
+      if( 0 == (items % 0)) { 
+        Serial.println( "" );
+        Serial.print( "   " );
+      }
+      sprintf( (char*)buf, "%-6s ",  fcnlist[i].name );
+
+      Serial.print( buf );
       items++;
     }
     i++;

};
#define kFcnFlagSD  (0x01)    /* command needs SD card */
#define kFcnFlagHDR (0x80)    /* fakeo for header */

struct fcns fcnlist[] =
{
  // these require SD card
  { "SD Card", NULL, kFcnFlagHDR },
  { "cd", &cmd_cd, kFcnFlagSD },
  { "pwd", &cmd_pwd, kFcnFlagSD },
  { "mkdir", &cmd_mkdir, kFcnFlagSD },
  { "rmdir", &cmd_rmdir, kFcnFlagSD },
  { "ls", &cmd_ls, kFcnFlagSD },
  { "dir", &cmd_ls, kFcnFlagSD },
  { "rm", &cmd_rm, kFcnFlagSD },
  { "del", &cmd_rm, kFcnFlagSD },
  { "capt", &cmd_capture, kFcnFlagSD },
  { "onto", &cmd_onto, kFcnFlagSD },
  { "hex", &cmd_hex, kFcnFlagSD },
  { "type", &cmd_type, kFcnFlagSD },
  { "more", &cmd_more, kFcnFlagSD },
  
  // these are for EEProm IO
  { "EEProm", NULL, kFcnFlagHDR },
  { "ecapt", &cmd_ecapture },
  { "eonto", &cmd_eonto },
  { "ehex", &cmd_ehex },

static const unsigned char msg_Cmds[]    PROGMEM = "Commands:";
static const unsigned char msg_Bytes[]   PROGMEM = " bytes.";
static const unsigned char msg_Files[]   PROGMEM = " Files.";
static const unsigned char msg_MoreA[]    PROGMEM = " ==[ More (page ";
static const unsigned char msg_MoreB[]    PROGMEM = ") ]==";
static const unsigned char msg_EchoOn[]  PROGMEM = "Echo on.";
static const unsigned char msg_EchoOff[] PROGMEM = "Echo off.";
static const unsigned char msg_BadPort[] PROGMEM = "Bad port.";
