diff --git a/src/ca-module.cpp b/src/ca-module.cpp
index 5e789f7..63db04f 100644
--- a/src/ca-module.cpp
+++ b/src/ca-module.cpp
@@ -1,5 +1,5 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
+/**
  * Copyright (c) 2017-2020, Regents of the University of California.
  *
  * This file is part of ndncert, a certificate management system based on NDN.
@@ -76,22 +76,22 @@
   prefixId = m_face.registerPrefix(prefix,
     [&] (const Name& name) {
       // register PROBE prefix
-      auto filterId = m_face.setInterestFilter(Name(name).append("_PROBE"),
+      auto filterId = m_face.setInterestFilter(Name(name).append("PROBE"),
                                                bind(&CaModule::onProbe, this, _2));
       m_interestFilterHandles.push_back(filterId);
 
       // register NEW prefix
-      filterId = m_face.setInterestFilter(Name(name).append("_NEW"),
+      filterId = m_face.setInterestFilter(Name(name).append("NEW"),
                                           bind(&CaModule::onNew, this, _2));
       m_interestFilterHandles.push_back(filterId);
 
       // register SELECT prefix
-      filterId = m_face.setInterestFilter(Name(name).append("_CHALLENGE"),
+      filterId = m_face.setInterestFilter(Name(name).append("CHALLENGE"),
                                           bind(&CaModule::onChallenge, this, _2));
       m_interestFilterHandles.push_back(filterId);
 
       // register DOWNLOAD prefix
-      filterId = m_face.setInterestFilter(Name(name).append("_DOWNLOAD"),
+      filterId = m_face.setInterestFilter(Name(name).append("DOWNLOAD"),
                                           bind(&CaModule::onDownload, this, _2));
       m_interestFilterHandles.push_back(filterId);
       _LOG_TRACE("Prefix " << name << " got registered");
@@ -238,7 +238,7 @@
   else if (probeToken != nullptr) {
     // check whether the carried probe token is a PROBE Data packet
     Name prefix = m_config.m_caName;
-    prefix.append("CA").append("_PROBE");
+    prefix.append("CA").append("PROBE");
     if (!prefix.isPrefixOf(probeToken->getName())) {
       _LOG_ERROR("Carried PROBE token is not a valid PROBE Data packet.");
       return;
diff --git a/src/client-module.cpp b/src/client-module.cpp
index 0daa72c..eff4e90 100644
--- a/src/client-module.cpp
+++ b/src/client-module.cpp
@@ -51,7 +51,7 @@
   Name interestName = caName;
   if (readString(caName.at(-1)) != "CA")
     interestName.append("CA");
-  interestName.append("_PROBE").append("INFO");
+  interestName.append("PROBE").append("INFO");
   auto interest = make_shared<Interest>(interestName);
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
@@ -97,7 +97,7 @@
 ClientModule::generateProbeInterest(const ClientCaItem& ca, const std::string& probeInfo)
 {
   Name interestName = ca.m_caName;
-  interestName.append("CA").append("_PROBE");
+  interestName.append("CA").append("PROBE");
   auto interest = make_shared<Interest>(interestName);
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
@@ -190,7 +190,7 @@
 
   // generate Interest packet
   Name interestName = m_ca.m_caName;
-  interestName.append("CA").append("_NEW");
+  interestName.append("CA").append("NEW");
   auto interest = make_shared<Interest>(interestName);
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
@@ -238,7 +238,7 @@
   m_challengeType = paramJson.get(JSON_CLIENT_SELECTED_CHALLENGE, "");
 
   Name interestName = m_ca.m_caName;
-  interestName.append("CA").append("_CHALLENGE").append(m_requestId);
+  interestName.append("CA").append("CHALLENGE").append(m_requestId);
   auto interest = make_shared<Interest>(interestName);
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
@@ -279,7 +279,7 @@
 ClientModule::generateDownloadInterest()
 {
   Name interestName = m_ca.m_caName;
-  interestName.append("CA").append("_DOWNLOAD").append(m_requestId);
+  interestName.append("CA").append("DOWNLOAD").append(m_requestId);
   auto interest = make_shared<Interest>(interestName);
   interest->setMustBeFresh(true);
   interest->setCanBePrefix(false);
