diff --git a/extras/emacs/dual-loop-skel.el b/extras/emacs/dual-loop-skel.el
index 97d63e0..583a2da 100644
--- a/extras/emacs/dual-loop-skel.el
+++ b/extras/emacs/dual-loop-skel.el
@@ -20,6 +20,7 @@
 nil
 '(setq node-name (skeleton-read "Node Name: "))
 '(setq uc-node-name (upcase node-name))
+'(setq main-p (concat (substring plugin-name 0 1) "mp"))
 "
 #include <vlib/vlib.h>
 #include <vnet/vnet.h>
@@ -300,12 +301,12 @@
 
 clib_error_t *" node-name "_init (vlib_main_t *vm)
 {
-  " node-name "_main_t *msm = &" node-name "_main;
+  " node-name "_main_t *" main-p " = &" node-name "_main;
     
   /* $$$$$ Initialize " node-name "_main_t structure here. $$$$$ */
-  msm->vlib_main = vm;
-  msm->vnet_main = vnet_get_main();
-  msm->ethernet_main = ethernet_get_main(vm);
+  " main-p "->vlib_main = vm;
+  " main-p "->vnet_main = vnet_get_main();
+  " main-p "->ethernet_main = ethernet_get_main(vm);
 
   return 0;
 }
diff --git a/extras/emacs/plugin-main-skel.el b/extras/emacs/plugin-main-skel.el
index 3ea3c12..14606c6 100644
--- a/extras/emacs/plugin-main-skel.el
+++ b/extras/emacs/plugin-main-skel.el
@@ -22,6 +22,7 @@
      (setq plugin-name (read-string "Plugin name: ")))
 '(setq PLUGIN-NAME (upcase plugin-name))
 '(setq capital-oh-en "ON")
+'(setq main-p (concat (substring plugin-name 0 1) "mp"))
 "/*
  * " plugin-name ".c - skeleton vpp engine plug-in
  *
@@ -71,7 +72,7 @@
 #include <" plugin-name "/" plugin-name "_all_api_h.h>
 #undef vl_api_version
 
-#define REPLY_MSG_ID_BASE sm->msg_id_base
+#define REPLY_MSG_ID_BASE " main-p "->msg_id_base
 #include <vlibapi/api_helper_macros.h>
 
 " plugin-name "_main_t " plugin-name "_main;
@@ -83,19 +84,19 @@
 
 /* Action function shared between message handler and debug CLI */
 
-int " plugin-name "_enable_disable (" plugin-name "_main_t * sm, u32 sw_if_index,
+int " plugin-name "_enable_disable (" plugin-name "_main_t * " main-p ", u32 sw_if_index,
                                    int enable_disable)
 {
   vnet_sw_interface_t * sw;
   int rv = 0;
 
   /* Utterly wrong? */
-  if (pool_is_free_index (sm->vnet_main->interface_main.sw_interfaces,
+  if (pool_is_free_index (" main-p "->vnet_main->interface_main.sw_interfaces,
                           sw_if_index))
     return VNET_API_ERROR_INVALID_SW_IF_INDEX;
 
   /* Not a physical port? */
-  sw = vnet_get_sw_interface (sm->vnet_main, sw_if_index);
+  sw = vnet_get_sw_interface (" main-p "->vnet_main, sw_if_index);
   if (sw->type != VNET_SW_INTERFACE_TYPE_HARDWARE)
     return VNET_API_ERROR_INVALID_SW_IF_INDEX;
 
@@ -103,7 +104,7 @@
                                sw_if_index, enable_disable, 0, 0);
 
   /* Send an event to enable/disable the periodic scanner process */
-  vlib_process_signal_event (sm->vlib_main, " plugin-name"_periodic_node.index, 
+  vlib_process_signal_event (" main-p "->vlib_main, " plugin-name"_periodic_node.index, 
                             " PLUGIN-NAME"_EVENT_PERIODIC_ENABLE_DISABLE, 
                             (uword)enable_disable);
 
@@ -115,7 +116,7 @@
                                    unformat_input_t * input,
                                    vlib_cli_command_t * cmd)
 {
-  " plugin-name "_main_t * sm = &" plugin-name "_main;
+  " plugin-name "_main_t * " main-p " = &" plugin-name "_main;
   u32 sw_if_index = ~0;
   int enable_disable = 1;
 
@@ -126,7 +127,7 @@
       if (unformat (input, \"disable\"))
         enable_disable = 0;
       else if (unformat (input, \"%U\", unformat_vnet_sw_interface,
-                         sm->vnet_main, &sw_if_index))
+                         " main-p "->vnet_main, &sw_if_index))
         ;
       else
         break;
@@ -135,7 +136,7 @@
   if (sw_if_index == ~0)
     return clib_error_return (0, \"Please specify an interface...\");
 
-  rv = " plugin-name "_enable_disable (sm, sw_if_index, enable_disable);
+  rv = " plugin-name "_enable_disable (" main-p ", sw_if_index, enable_disable);
 
   switch(rv) 
     {
@@ -173,10 +174,10 @@
 (vl_api_" plugin-name "_enable_disable_t * mp)
 {
   vl_api_" plugin-name "_enable_disable_reply_t * rmp;
-  " plugin-name "_main_t * sm = &" plugin-name "_main;
+  " plugin-name "_main_t * " main-p " = &" plugin-name "_main;
   int rv;
 
-  rv = " plugin-name "_enable_disable (sm, ntohl(mp->sw_if_index),
+  rv = " plugin-name "_enable_disable (" main-p ", ntohl(mp->sw_if_index),
                                       (int) (mp->enable_disable));
 
   REPLY_MACRO(VL_API_" PLUGIN-NAME "_ENABLE_DISABLE_REPLY);
@@ -186,9 +187,9 @@
 static clib_error_t *
 " plugin-name "_plugin_api_hookup (vlib_main_t *vm)
 {
-  " plugin-name "_main_t * sm = &" plugin-name "_main;
+  " plugin-name "_main_t * " main-p " = &" plugin-name "_main;
 #define _(N,n)                                                  \\
-    vl_msg_api_set_handlers((VL_API_##N + sm->msg_id_base),     \\
+    vl_msg_api_set_handlers((VL_API_##N + " main-p "->msg_id_base),     \\
                            #n,					\\
                            vl_api_##n##_t_handler,              \\
                            vl_noop_handler,                     \\
@@ -206,33 +207,33 @@
 #undef vl_msg_name_crc_list
 
 static void
-setup_message_id_table (" plugin-name "_main_t * sm, api_main_t * am)
+setup_message_id_table (" plugin-name "_main_t * " main-p ", api_main_t * am)
 {
 #define _(id,n,crc) \
-  vl_msg_api_add_msg_name_crc (am, #n "_" #crc, id + sm->msg_id_base);
+  vl_msg_api_add_msg_name_crc (am, #n "_" #crc, id + " main-p "->msg_id_base);
   foreach_vl_msg_name_crc_" plugin-name" ;
 #undef _
 }
 
 static clib_error_t * " plugin-name "_init (vlib_main_t * vm)
 {
-  " plugin-name "_main_t * sm = &" plugin-name "_main;
+  " plugin-name "_main_t * " main-p " = &" plugin-name "_main;
   clib_error_t * error = 0;
   u8 * name;
 
-  sm->vlib_main = vm;
-  sm->vnet_main = vnet_get_main();
+  " main-p "->vlib_main = vm;
+  " main-p "->vnet_main = vnet_get_main();
 
   name = format (0, \"" plugin-name "_%08x%c\", api_version, 0);
 
   /* Ask for a correctly-sized block of API message decode slots */
-  sm->msg_id_base = vl_msg_api_get_msg_ids
+  " main-p "->msg_id_base = vl_msg_api_get_msg_ids
       ((char *) name, VL_MSG_FIRST_AVAILABLE);
 
   error = " plugin-name "_plugin_api_hookup (vm);
 
   /* Add our API messages to the global name_crc hash table */
-  setup_message_id_table (sm, &api_main);
+  setup_message_id_table (" main-p ", &api_main);
 
   vec_free(name);
 
diff --git a/extras/emacs/plugin-test-skel.el b/extras/emacs/plugin-test-skel.el
index 5928c97..1de1b98 100644
--- a/extras/emacs/plugin-test-skel.el
+++ b/extras/emacs/plugin-test-skel.el
@@ -22,6 +22,7 @@
      (setq plugin-name (read-string "Plugin name: ")))
 '(setq PLUGIN-NAME (upcase plugin-name))
 '(setq capital-oh-en "ON")
+'(setq main-p (concat (substring plugin-name 0 1) "tmp"))
 "/*
  * " plugin-name ".c - skeleton vpp-api-test plug-in 
  *
@@ -159,10 +160,10 @@
 
 static void " plugin-name "_api_hookup (vat_main_t *vam)
 {
-    " plugin-name "_test_main_t * sm = &" plugin-name "_test_main;
+    " plugin-name "_test_main_t * " main-p " = &" plugin-name "_test_main;
     /* Hook up handlers for replies from the data plane plug-in */
 #define _(N,n)                                                  \\
-    vl_msg_api_set_handlers((VL_API_##N + sm->msg_id_base),     \\
+    vl_msg_api_set_handlers((VL_API_##N + " main-p "->msg_id_base),     \\
                            #n,                                  \\
                            vl_api_##n##_t_handler,              \\
                            vl_noop_handler,                     \\
@@ -185,16 +186,16 @@
 
 clib_error_t * vat_plugin_register (vat_main_t *vam)
 {
-  " plugin-name "_test_main_t * sm = &" plugin-name "_test_main;
+  " plugin-name "_test_main_t * " main-p " = &" plugin-name "_test_main;
   u8 * name;
 
-  sm->vat_main = vam;
+  " main-p "->vat_main = vam;
 
   /* Ask the vpp engine for the first assigned message-id */
   name = format (0, \"" plugin-name "_%08x%c\", api_version, 0);
-  sm->msg_id_base = vl_client_get_first_plugin_msg_id ((char *) name);
+  " main-p "->msg_id_base = vl_client_get_first_plugin_msg_id ((char *) name);
 
-  if (sm->msg_id_base != (u16) ~0)
+  if (" main-p "->msg_id_base != (u16) ~0)
     " plugin-name "_api_hookup (vam);
   
   vec_free(name);
