diff --git a/log4cxx.properties b/log4cxx.properties
index ccf24a6..e89f3b0 100644
--- a/log4cxx.properties
+++ b/log4cxx.properties
@@ -8,9 +8,11 @@
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 log4j.appender.A1.target=System.err
 #log4j.appender.A1.layout.ConversionPattern=%d{dd-MMM HH:MM:SS,SSS} %p %c %m%n
-log4j.appender.A1.layout.ConversionPattern=%d{h:m:s,SSS} %t %-10c{1}  %m%n
+log4j.appender.A1.layout.ConversionPattern=%d{hh:mm:ss,SSS} %-14t %-10c{1}  %m%n
 
 log4j.logger.SyncLogic = TRACE
+log4j.logger.AppDataFetch = TRACE
+log4j.logger.Test = TRACE
 #log4j.logger.bgpparser=TRACE
 #log4j.logger.bgpparser.AttributeType=ERROR
 #log4j.logger.bgpparser.MRTCommonHeader=ERROR
diff --git a/model/sync-app-data-fetch.cc b/model/sync-app-data-fetch.cc
index 4cf22a3..b3bf362 100644
--- a/model/sync-app-data-fetch.cc
+++ b/model/sync-app-data-fetch.cc
@@ -21,6 +21,7 @@
  */
 
 #include "sync-app-data-fetch.h"
+#include "sync-log.h"
 
 using namespace std;
 using namespace boost;
@@ -28,9 +29,13 @@
 namespace Sync
 {
 
+INIT_LOGGER ("AppDataFetch");
+
 void
 AppDataFetch::onUpdate (const std::string &prefix, const SeqNo &newSeq, const SeqNo &oldSeq)
 {
+  _LOG_FUNCTION (this << ", " << prefix << ", " << newSeq << ", " << oldSeq);
+  
   // sequence number logic here
   uint32_t start = 0;
   if (oldSeq.isValid ())
@@ -54,6 +59,8 @@
 void
 AppDataFetch::onRemove (const std::string &prefix)
 {
+  _LOG_FUNCTION (this << ", " << prefix);
+  
   // I guess this should be somewhere in app
 }
 
diff --git a/model/sync-logic.cc b/model/sync-logic.cc
index 088f8e3..2134256 100644
--- a/model/sync-logic.cc
+++ b/model/sync-logic.cc
@@ -284,7 +284,7 @@
     }
   m_log.erase (m_state.getDigest()); // remove diff state with the same digest.  next pointers are still valid
   /// @todo Optimization
-  m_log.insert (diffLog);
+  m_log.get<sequenced> ().push_front (diffLog);
   _LOG_DEBUG (*diffLog->getDigest () << " " << m_log.size ());
 }
 
diff --git a/test/test_app_socket.cc b/test/test_app_socket.cc
index 4773c36..bf7db83 100644
--- a/test/test_app_socket.cc
+++ b/test/test_app_socket.cc
@@ -38,12 +38,13 @@
 using namespace std;
 using namespace boost;
 
-INIT_LOGGER ("Test::AppSocket");
+INIT_LOGGER ("Test.AppSocket");
 
 class TestSocketApp {
 public:
   map<string, string> data;
   void set(string str1, string str2) {
+    _LOG_FUNCTION (this << ", " << str1);
     data.insert(make_pair(str1, str2));
     // cout << str1 << ", " << str2 << endl;
   }
@@ -102,13 +103,14 @@
   s1.publish (p1, 0, data1, 10);
   _LOG_DEBUG ("s1 publish");
   s1.publish (p1, 0, data2, 10);
-  this_thread::sleep (posix_time::milliseconds (1000));
-
+  this_thread::sleep (posix_time::milliseconds (100));
+  
+  _LOG_DEBUG ("testing");
   // // // from code logic, we won't be fetching our own data
-  // a1.set(p1 + "/0/1", data1);
-  // a1.set(p1 + "/0/2", data2);
-  // BOOST_CHECK_EQUAL(a1.toString(), a2.toString());
-  // // BOOST_CHECK_EQUAL(a2.toString(), a3.toString());
+  a1.set(p1 + "/0/1", data1);
+  a1.set(p1 + "/0/2", data2);
+  BOOST_CHECK_EQUAL(a1.toString(), a2.toString());
+  BOOST_CHECK_EQUAL(a2.toString(), a3.toString());
 
   // // another single source
   // // string data3 = "You surf the Internet, I surf the real world";
