diff --git a/.config b/.config
index 6eb9daa..d32351e 100644
--- a/.config
+++ b/.config
@@ -18,6 +18,7 @@
 CONFIG_CAL=y
 CONFIG_CAT=y
 CONFIG_CAT_V=y
+# CONFIG_CATV is not set
 CONFIG_CHGRP=y
 CONFIG_CHOWN=y
 CONFIG_CHMOD=y
diff --git a/generated/config.h b/generated/config.h
index 9e14105..9127751 100644
--- a/generated/config.h
+++ b/generated/config.h
@@ -20,6 +20,8 @@
 #define USE_CAT(...) __VA_ARGS__
 #define CFG_CAT_V 1
 #define USE_CAT_V(...) __VA_ARGS__
+#define CFG_CATV 0
+#define USE_CATV(...)
 #define CFG_CHGRP 1
 #define USE_CHGRP(...) __VA_ARGS__
 #define CFG_CHOWN 1
diff --git a/generated/flags.h b/generated/flags.h
index c4f1e55..be77bbd 100644
--- a/generated/flags.h
+++ b/generated/flags.h
@@ -143,6 +143,17 @@
 #undef FLAG_u
 #endif
 
+// catv   vte
+#undef OPTSTR_catv
+#define OPTSTR_catv  0 
+#ifdef CLEANUP_catv
+#undef CLEANUP_catv
+#undef FOR_catv
+#undef FLAG_e
+#undef FLAG_t
+#undef FLAG_v
+#endif
+
 // cd    
 #undef OPTSTR_cd
 #define OPTSTR_cd  0 
@@ -2792,6 +2803,15 @@
 #define FLAG_u (1<<3)
 #endif
 
+#ifdef FOR_catv
+#ifndef TT
+#define TT this.catv
+#endif
+#define FLAG_e (FORCED_FLAG<<0)
+#define FLAG_t (FORCED_FLAG<<1)
+#define FLAG_v (FORCED_FLAG<<2)
+#endif
+
 #ifdef FOR_cd
 #ifndef TT
 #define TT this.cd
diff --git a/generated/help.h b/generated/help.h
index 041da12..b3ebf6f 100644
--- a/generated/help.h
+++ b/generated/help.h
@@ -492,6 +492,8 @@
 
 #define help_chgrp "usage: chgrp/chown [-RHLP] [-fvh] group file...\n\nChange group of one or more files.\n\n-f	suppress most error messages.\n-h	change symlinks instead of what they point to\n-R	recurse into subdirectories (implies -h).\n-H	with -R change target of symlink, follow command line symlinks\n-L	with -R change target of symlink, follow all symlinks\n-P	with -R change symlink, do not follow symlinks (default)\n-v	verbose output.\n\n"
 
+#define help_catv "usage: catv [-evt] [filename...]\n\nDisplay nonprinting characters as escape sequences. Use M-x for\nhigh ascii characters (>127), and ^x for other nonprinting chars.\n\n-e  Mark each newline with $\n-t  Show tabs as ^I\n-v  Don't use ^x or M-x escapes.\n\n"
+
 #define help_cat "usage: cat [-etuv] [file...]\n\nCopy (concatenate) files to stdout.  If no files listed, copy from stdin.\nFilename \"-\" is a synonym for stdin.\n\n-e	Mark each newline with $\n-t	Show tabs as ^I\n-u	Copy one byte at a time (slow).\n-v	Display nonprinting characters as escape sequences. Use M-x for\n	high ascii characters (>127), and ^x for other nonprinting chars.\n"
 
 #define help_cal "usage: cal [[month] year]\n\nPrint a calendar.\n\nWith one argument, prints all months of the specified year.\nWith two arguments, prints calendar for month and year.\n\n"
diff --git a/generated/newtoys.h b/generated/newtoys.h
index 2636b2b..5302bda 100644
--- a/generated/newtoys.h
+++ b/generated/newtoys.h
@@ -14,6 +14,7 @@
 USE_BZCAT(NEWTOY(bzcat, NULL, TOYFLAG_USR|TOYFLAG_BIN))
 USE_CAL(NEWTOY(cal, ">2", TOYFLAG_USR|TOYFLAG_BIN))
 USE_CAT(NEWTOY(cat, "u"USE_CAT_V("vte"), TOYFLAG_BIN))
+USE_CATV(NEWTOY(catv, USE_CATV("vte"), TOYFLAG_USR|TOYFLAG_BIN))
 USE_SH(NEWTOY(cd, NULL, TOYFLAG_NOFORK))
 USE_CHATTR(NEWTOY(chattr, NULL, TOYFLAG_BIN))
 USE_CHCON(NEWTOY(chcon, "<2hvR", TOYFLAG_USR|TOYFLAG_BIN))
diff --git a/toys/pending/more.c b/toys/pending/more.c
index 59392ff..f0e7907 100644
--- a/toys/pending/more.c
+++ b/toys/pending/more.c
@@ -53,6 +53,7 @@
     input_key = tolower(getc(cin));
     printf("\33[0m\33[1K\r"); // Reset all attributes, erase to start of line.
     if (strchr(" \nrq", input_key)) {
+      fflush(NULL);
       return input_key;
     }
     printf("\33[7m(Enter:Next line Space:Next page Q:Quit R:Show the rest)");
@@ -95,8 +96,8 @@
   do {
     fp = stdin;
     if (*toys.optargs && !(fp = fopen(*toys.optargs, "r"))) {
-        perror_msg("'%s'", *toys.optargs);
-        continue;
+        perror_msg("%s", *toys.optargs);
+        goto next_file;
     }
     st.st_size = show_prompt = col = row = 0;
     fstat(fileno(fp), &st);
@@ -133,6 +134,7 @@
     }
     fclose(fp);
 
+next_file:
     if (*toys.optargs && *++toys.optargs) {
       input_key = prompt(cin, "--More--(Next file: %s)", *toys.optargs);
       if (input_key == 'q') goto stop;
diff --git a/toys/posix/cat.c b/toys/posix/cat.c
index 07de074..01134a7 100644
--- a/toys/posix/cat.c
+++ b/toys/posix/cat.c
@@ -8,7 +8,7 @@
  *   http://cm.bell-labs.com/cm/cs/doc/84/kp.ps.gz
 
 USE_CAT(NEWTOY(cat, "u"USE_CAT_V("vte"), TOYFLAG_BIN))
-#USE_CATV(NEWTOY(catv, USE_CATV("vte"), TOYFLAG_USR|TOYFLAG_BIN))
+USE_CATV(NEWTOY(catv, USE_CATV("vte"), TOYFLAG_USR|TOYFLAG_BIN))
 
 config CAT
   bool "cat"
@@ -23,7 +23,7 @@
 
 config CAT_V
   bool "cat -etv"
-  default y
+  default n
   depends on CAT
   help
     usage: cat [-evt]
@@ -32,15 +32,10 @@
     -t	Show tabs as ^I
     -v	Display nonprinting characters as escape sequences. Use M-x for
     	high ascii characters (>127), and ^x for other nonprinting chars.
-*/
-
-/*
-todo:
 
 config CATV
   bool "catv"
   default y
-  depends on !CAT_V
   help
     usage: catv [-evt] [filename...]
 
@@ -53,6 +48,7 @@
 */
 
 #define FOR_cat
+#define FORCE_FLAGS
 #include "toys.h"
 
 static void do_cat(int fd, char *name)
@@ -63,7 +59,7 @@
     len = read(fd, toybuf, size);
     if (len < 0) toys.exitval = EXIT_FAILURE;
     if (len < 1) break;
-    if (CFG_CAT_V && (toys.optflags&~FLAG_u)) {
+    if ((CFG_CAT_V || CFG_CATV) && (toys.optflags&~FLAG_u)) {
       for (i=0; i<len; i++) {
         char c=toybuf[i];
 
@@ -96,14 +92,8 @@
   loopfiles(toys.optargs, do_cat);
 }
 
-//todo:
-//void catv_main(void)
-//{
-//  toys.optflags ^= FLAG_v;
-//  loopfiles(toys.optargs, do_catv);
-//}
-
-// The common infrastructure is testing FLAG_h which is only defined in cat
-// context (not catv), but catv can't use cat's flag context if cat is disabled
-// and its flags are zero. Need to upgrade flag parsing infrastructure so
-// defining FORCE_FLAGS along with FOR_command doesn't zero unused flag macros.
+void catv_main(void)
+{
+  toys.optflags ^= FLAG_v;
+  loopfiles(toys.optargs, do_cat);
+}
