Now everything at least compiles, though doing nothing
diff --git a/model/sync-ccnx-name-info.cc b/model/sync-ccnx-name-info.cc
index f0a5473..2f97b12 100644
--- a/model/sync-ccnx-name-info.cc
+++ b/model/sync-ccnx-name-info.cc
@@ -24,26 +24,52 @@
 #include "ns3/ccnx-name-components.h"
 
 #include <boost/lexical_cast.hpp>
+#include <utility>
+
+using namespace std;
+using namespace boost;
 
 namespace ns3 {
 namespace Sync {
 
+NameInfoConstPtr
+CcnxNameInfo::FindOrCreate (Ptr<const CcnxNameComponents> name)
+{
+  string key = lexical_cast<string> (*name);
+
+  NameInfoPtr value = NameInfoPtr (new CcnxNameInfo (name));
+  pair<NameMap::iterator,bool> item =
+    m_names.insert (make_pair (key, value));
+
+  return item.first->second;
+}
 
 CcnxNameInfo::CcnxNameInfo (Ptr<const CcnxNameComponents> name)
   : m_name (name)
 {
+  m_id = m_ids ++; // set ID for a newly inserted element
 }
 
-CcnxNameInfo::~CcnxNameInfo ()
-{
-}
-
-std::string
+string
 CcnxNameInfo::toString () const
 {
-  return boost::lexical_cast<std::string> (*m_name);
+  return lexical_cast<std::string> (*m_name);
 }
 
+bool
+CcnxNameInfo::operator == (const NameInfo &info) const
+{
+  try
+    {
+      return *m_name == *dynamic_cast<const CcnxNameInfo&> (info).m_name;
+    }
+  catch (...)
+    {
+      return false;
+    }
+}
+
+
 
 } // Sync
 } // ns3