diff --git a/src/vnet/session/session_cli.c b/src/vnet/session/session_cli.c
index e92d432..d8e504e 100755
--- a/src/vnet/session/session_cli.c
+++ b/src/vnet/session/session_cli.c
@@ -52,7 +52,7 @@
  *   "Connection"
  */
 u8 *
-format_stream_session (u8 * s, va_list * args)
+format_session (u8 * s, va_list * args)
 {
   session_t *ss = va_arg (*args, session_t *);
   int verbose = va_arg (*args, int);
@@ -160,7 +160,7 @@
 }
 
 uword
-unformat_stream_session (unformat_input_t * input, va_list * args)
+unformat_session (unformat_input_t * input, va_list * args)
 {
   session_t **result = va_arg (*args, session_t **);
   u32 lcl_port = 0, rmt_port = 0, fib_index = 0;
@@ -230,7 +230,7 @@
 			 vlib_cli_command_t * cmd)
 {
   u8 one_session = 0, do_listeners = 0, sst, do_elog = 0;
-  session_manager_main_t *smm = &session_manager_main;
+  session_main_t *smm = &session_main;
   u32 transport_proto = ~0, track_index;
   session_t *pool, *s;
   transport_connection_t *tc;
@@ -252,7 +252,7 @@
       else if (unformat (input, "listeners %U", unformat_transport_proto,
 			 &transport_proto))
 	do_listeners = 1;
-      else if (unformat (input, "%U", unformat_stream_session, &s))
+      else if (unformat (input, "%U", unformat_session, &s))
 	{
 	  one_session = 1;
 	}
@@ -265,7 +265,7 @@
 
   if (one_session)
     {
-      u8 *str = format (0, "%U", format_stream_session, s, 3);
+      u8 *str = format (0, "%U", format_session, s, 3);
       if (do_elog && s->session_state != SESSION_STATE_LISTENING)
 	{
 	  elog_main_t *em = &vm->elog_main;
@@ -295,7 +295,7 @@
 	  continue;
 	app_wrk = app_worker_get (s->app_wrk_index);
 	app_name = application_name_from_index (app_wrk->app_index);
-	vlib_cli_output (vm, "%U%-25v%", format_stream_session, s, 0,
+	vlib_cli_output (vm, "%U%-25v%", format_session, s, 0,
 			 app_name);
       }));
       /* *INDENT-ON* */
@@ -333,7 +333,7 @@
             n_closed += 1;
             continue;
           }
-        vlib_cli_output (vm, "%U", format_stream_session, s, verbose);
+        vlib_cli_output (vm, "%U", format_session, s, verbose);
       }));
       /* *INDENT-ON* */
 
@@ -371,9 +371,9 @@
 clear_session_command_fn (vlib_main_t * vm, unformat_input_t * input,
 			  vlib_cli_command_t * cmd)
 {
-  session_manager_main_t *smm = &session_manager_main;
+  session_main_t *smm = &session_main;
   u32 thread_index = 0, clear_all = 0;
-  session_manager_worker_t *wrk;
+  session_worker_t *wrk;
   u32 session_index = ~0;
   session_t *session;
 
@@ -441,7 +441,7 @@
 
   while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
     {
-      if (unformat (input, "%U", unformat_stream_session, &s))
+      if (unformat (input, "%U", unformat_session, &s))
 	;
       else if (unformat (input, "rx"))
 	is_rx = 1;
@@ -490,7 +490,7 @@
 
   while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
     {
-      if (unformat (input, "%U", unformat_stream_session, &s))
+      if (unformat (input, "%U", unformat_session, &s))
 	;
       else if (unformat (input, "rx"))
 	is_rx = 1;
