diff --git a/model/ccnx-local-face.cc b/model/ccnx-app-face.cc
similarity index 82%
rename from model/ccnx-local-face.cc
rename to model/ccnx-app-face.cc
index 8f78dff..e47d35b 100644
--- a/model/ccnx-local-face.cc
+++ b/model/ccnx-app-face.cc
@@ -20,7 +20,7 @@
  *
  */
 
-#include "ccnx-local-face.h"
+#include "ccnx-app-face.h"
 
 #include "ns3/log.h"
 #include "ns3/packet.h"
@@ -34,22 +34,22 @@
 #include "ccnx-interest-header.h"
 #include "ccnx-content-object-header.h"
 
-NS_LOG_COMPONENT_DEFINE ("CcnxLocalFace");
+NS_LOG_COMPONENT_DEFINE ("CcnxAppFace");
 
 namespace ns3 
 {
 
 TypeId
-CcnxLocalFace::GetTypeId ()
+CcnxAppFace::GetTypeId ()
 {
-  static TypeId tid = TypeId ("ns3::CcnxLocalFace")
+  static TypeId tid = TypeId ("ns3::CcnxAppFace")
     .SetParent<CcnxFace> ()
     .SetGroupName ("Ccnx")
     ;
   return tid;
 }
 
-CcnxLocalFace::CcnxLocalFace (Ptr<CcnxApp> app)
+CcnxAppFace::CcnxAppFace (Ptr<CcnxApp> app)
   : CcnxFace (app->GetNode ())
   , m_app (app)
 {
@@ -58,29 +58,29 @@
   NS_ASSERT (m_app != 0);
 }
 
-CcnxLocalFace::~CcnxLocalFace ()
+CcnxAppFace::~CcnxAppFace ()
 {
   NS_LOG_FUNCTION_NOARGS ();
 }
 
-CcnxLocalFace::CcnxLocalFace ()
+CcnxAppFace::CcnxAppFace ()
   : CcnxFace (0)
 {
 }
 
-CcnxLocalFace::CcnxLocalFace (const CcnxLocalFace &)
+CcnxAppFace::CcnxAppFace (const CcnxAppFace &)
   : CcnxFace (0)
 {
 }
 
-CcnxLocalFace& CcnxLocalFace::operator= (const CcnxLocalFace &)
+CcnxAppFace& CcnxAppFace::operator= (const CcnxAppFace &)
 {
-  return *((CcnxLocalFace*)0);
+  return *((CcnxAppFace*)0);
 }
 
 
 void
-CcnxLocalFace::RegisterProtocolHandler (ProtocolHandler handler)
+CcnxAppFace::RegisterProtocolHandler (ProtocolHandler handler)
 {
   NS_LOG_FUNCTION (this);
 
@@ -90,7 +90,7 @@
 }
 
 void
-CcnxLocalFace::SendImpl (Ptr<Packet> p)
+CcnxAppFace::SendImpl (Ptr<Packet> p)
 {
   NS_LOG_FUNCTION (this << p);
 
@@ -129,7 +129,7 @@
     }
 }
 
-std::ostream& CcnxLocalFace::Print (std::ostream& os) const
+std::ostream& CcnxAppFace::Print (std::ostream& os) const
 {
   os << "dev=local(" << GetId() << ")";
   return os;
diff --git a/model/ccnx-local-face.h b/model/ccnx-app-face.h
similarity index 78%
rename from model/ccnx-local-face.h
rename to model/ccnx-app-face.h
index 327199d..39438f5 100644
--- a/model/ccnx-local-face.h
+++ b/model/ccnx-app-face.h
@@ -19,8 +19,8 @@
                 Ilya Moiseenko <iliamo@cs.ucla.edu>
  */
 
-#ifndef CCNX_LOCAL_FACE_H
-#define CCNX_LOCAL_FACE_H
+#ifndef CCNX_APP_FACE_H
+#define CCNX_APP_FACE_H
 
 #include "ccnx-face.h"
 #include "ns3/traced-callback.h"
@@ -41,9 +41,9 @@
  * component responsible for actual delivery of data packet to and
  * from CCNx stack
  *
- * \see CcnxLocalFace, CcnxNetDeviceFace, CcnxIpv4Face, CcnxUdpFace
+ * \see CcnxAppFace, CcnxNetDeviceFace, CcnxIpv4Face, CcnxUdpFace
  */
-class CcnxLocalFace  : public CcnxFace
+class CcnxAppFace  : public CcnxFace
 {
 public:
   static TypeId
@@ -52,8 +52,8 @@
   /**
    * \brief Default constructor
    */
-  CcnxLocalFace (Ptr<CcnxApp> app);
-  virtual ~CcnxLocalFace();
+  CcnxAppFace (Ptr<CcnxApp> app);
+  virtual ~CcnxAppFace();
   
   ////////////////////////////////////////////////////////////////////
   // methods overloaded from CcnxFace
@@ -70,16 +70,16 @@
   ////////////////////////////////////////////////////////////////////
  
 private:
-  CcnxLocalFace ();
-  CcnxLocalFace (const CcnxLocalFace &); ///< \brief Disabled copy constructor
-  CcnxLocalFace& operator= (const CcnxLocalFace &); ///< \brief Disabled copy operator
+  CcnxAppFace ();
+  CcnxAppFace (const CcnxAppFace &); ///< \brief Disabled copy constructor
+  CcnxAppFace& operator= (const CcnxAppFace &); ///< \brief Disabled copy operator
 
 private:
   Ptr<CcnxApp> m_app;
 };
 
-std::ostream& operator<< (std::ostream& os, const CcnxLocalFace &localFace);
+std::ostream& operator<< (std::ostream& os, const CcnxAppFace &localFace);
 
 } // namespace ns3
 
-#endif
+#endif // CCNX_APP_FACE_H
