diff --git a/lib/ChangeLog b/lib/ChangeLog
index 75ff444..7fd36d2 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,5 +1,19 @@
 2004-11-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
+	* vty.h: Remove fields in struct vty that were related to VTY_CONTINUE
+	  capabilities (that were used only in bgpd/bgp_route.c and are now
+	  removed).  Also remove some other fields that were not being
+	  used at all.
+	* vty.c: (vty_execute) Do not test for obsolete status values VTY_START
+	  and VTY_CONTINUE.
+	  (vty_read) Remove calls to vty->output_func since that was part
+	  of the VTY_CONTINUE infrastructure that has been removed.
+	  (vty_flush) Remove code to support VTY_START and VTY_CONTINUE.
+	  (vty_close) Remove code to cancel vty->t_output thread, since that
+	  thread was never actually used.
+
+2004-11-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
 	* vty.c: Vtysh connections to daemons should use buffering.
 	  (vty_out) Remove exception for vty_shell_serv, just use buffer_write.
 	  (vty_new) Increase output buffer size to 4096 rounded up to a
diff --git a/lib/vty.c b/lib/vty.c
index e6bcb61..1ef552f 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -1206,9 +1206,7 @@
   vty->cp = vty->length = 0;
   vty_clear_buf (vty);
 
-  if (vty->status != VTY_CLOSE 
-      && vty->status != VTY_START
-      && vty->status != VTY_CONTINUE)
+  if (vty->status != VTY_CLOSE )
     vty_prompt (vty);
 
   return ret;
@@ -1310,8 +1308,6 @@
 	    case CONTROL('C'):
 	    case 'q':
 	    case 'Q':
-	      if (vty->output_func)
-		(*vty->output_func) (vty, 1);
 	      vty_buffer_reset (vty);
 	      break;
 #if 0 /* More line does not work for "show ip bgp".  */
@@ -1321,8 +1317,6 @@
 	      break;
 #endif
 	    default:
-	      if (vty->output_func)
-		(*vty->output_func) (vty, 0);
 	      break;
 	    }
 	  continue;
@@ -1472,55 +1466,6 @@
       }
 
   /* Function execution continue. */
-  if (vty->status == VTY_START || vty->status == VTY_CONTINUE)
-    {
-      if (vty->status == VTY_CONTINUE)
-	erase = 1;
-      else
-	erase = 0;
-
-      if (vty->output_func == NULL)
-	dont_more = 1;
-      else
-	dont_more = 0;
-
-      if (vty->lines == 0)
-	{
-	  erase = 0;
-	  dont_more = 1;
-	}
-
-      buffer_flush_vty_all (vty->obuf, vty->fd, erase, dont_more);
-
-      if (vty->status == VTY_CLOSE)
-	{
-	  vty_close (vty);
-	  return 0;
-	}
-
-      if (vty->output_func == NULL)
-	{
-	  vty->status = VTY_NORMAL;
-	  vty_prompt (vty);
-	  vty_event (VTY_WRITE, vty_sock, vty);
-	}
-      else
-	vty->status = VTY_MORE;
-
-      if (vty->lines == 0)
-	{
-	  if (vty->output_func == NULL)
-	    vty_event (VTY_READ, vty_sock, vty);
-	  else
-	    {
-	      if (vty->output_func)
-		(*vty->output_func) (vty, 0);
-	      vty_event (VTY_WRITE, vty_sock, vty);
-	    }
-	}
-    }
-  else
-    {
       if (vty->status == VTY_MORE || vty->status == VTY_MORELINE)
 	erase = 1;
       else
@@ -1554,7 +1499,6 @@
 	  if (vty->lines == 0)
 	    vty_event (VTY_WRITE, vty_sock, vty);
 	}
-    }
 
   return 0;
 }
@@ -2075,8 +2019,6 @@
     thread_cancel (vty->t_write);
   if (vty->t_timeout)
     thread_cancel (vty->t_timeout);
-  if (vty->t_output)
-    thread_cancel (vty->t_output);
 
   /* Flush buffer. */
   if (! buffer_empty (vty->obuf))
diff --git a/lib/vty.h b/lib/vty.h
index c5c8c3b..c3221e2 100644
--- a/lib/vty.h
+++ b/lib/vty.h
@@ -41,9 +41,6 @@
   /* What address is this vty comming from. */
   char *address;
 
-  /* Privilege level of this vty. */
-  int privilege;
-
   /* Failure count */
   int fail;
 
@@ -82,8 +79,7 @@
   unsigned char escape;
 
   /* Current vty status. */
-  enum {VTY_NORMAL, VTY_CLOSE, VTY_MORE, VTY_MORELINE,
-        VTY_START, VTY_CONTINUE} status;
+  enum {VTY_NORMAL, VTY_CLOSE, VTY_MORE, VTY_MORELINE} status;
 
   /* IAC handling */
   unsigned char iac;
@@ -96,14 +92,9 @@
   int width;
   int height;
 
-  int scroll_one;
-
   /* Configure lines. */
   int lines;
 
-  /* Current executing function pointer. */
-  int (*func) (struct vty *, void *arg);
-
   /* Terminal monitor. */
   int monitor;
 
@@ -117,17 +108,6 @@
   /* Timeout seconds and thread. */
   unsigned long v_timeout;
   struct thread *t_timeout;
-
-  /* Thread output function. */
-  struct thread *t_output;
-
-  /* Output data pointer. */
-  int (*output_func) (struct vty *, int);
-  void (*output_clean) (struct vty *);
-  void *output_rn;
-  unsigned long output_count;
-  int output_type;
-  void *output_arg;
 };
 
 /* Integrated configuration file. */
