Making Sync's destructor virtual (to prevent creation of Sync object)
diff --git a/doc/doxygen.conf b/doc/doxygen.conf
index 0989ca5..5408411 100644
--- a/doc/doxygen.conf
+++ b/doc/doxygen.conf
@@ -568,7 +568,7 @@
 # directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
-INPUT                  = model helper
+INPUT                  = doc model helper
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
diff --git a/doc/doxygen_boost_dummy.h b/doc/doxygen_boost_dummy.h
new file mode 100644
index 0000000..e65d80c
--- /dev/null
+++ b/doc/doxygen_boost_dummy.h
@@ -0,0 +1,9 @@
+namespace boost { template<class T> class shared_ptr { T *dummy; }; }
+// typedef 
+// namespace boost {
+//   template<class T>
+//     class shared_ptr
+//     {
+//       typedef T* type;
+//     };
+// }
diff --git a/model/sync-digest.h b/model/sync-digest.h
index 91b331e..d98868e 100644
--- a/model/sync-digest.h
+++ b/model/sync-digest.h
@@ -95,21 +95,14 @@
   inline Digest &
   operator << (const std::string &str);
 
+  /**
+   * @brief Add uint32_t value to digest calculation
+   * @param value uint32_t value to put into digest
+   */
   inline Digest &
   operator << (uint32_t value);
 
-  // /**
-  //  * @brief Add integer to digest calculation
-  //  * @param value the value to add to the digest
-  //  */
-  // template<class INT>
-  // inline Digest &
-  // operator << (INT value);
-
 private:
-  /**
-   * @brief Disabled copy operator 
-   */
   Digest &
   operator = (Digest &digest) { return *this; }
   
diff --git a/model/sync-full-state.cc b/model/sync-full-state.cc
index dcc4399..7e4a30f 100644
--- a/model/sync-full-state.cc
+++ b/model/sync-full-state.cc
@@ -91,7 +91,7 @@
   LeafContainer::iterator item = m_leaves.find (*info);
   if (item == m_leaves.end ())
     {
-      m_leaves.insert (make_shared<Leaf> (info, cref (seq)));
+      m_leaves.insert (make_shared<FullLeaf> (info, cref (seq)));
     }
   else
     {
diff --git a/model/sync-leaf.cc b/model/sync-leaf.cc
index 6ff48bc..6480480 100644
--- a/model/sync-leaf.cc
+++ b/model/sync-leaf.cc
@@ -30,6 +30,10 @@
 {
 }
 
+Leaf::~Leaf ()
+{
+}
+
 void
 Leaf::setSeq (const SeqNo &seq)
 {
diff --git a/model/sync-leaf.h b/model/sync-leaf.h
index c4da60c..c5f4c20 100644
--- a/model/sync-leaf.h
+++ b/model/sync-leaf.h
@@ -41,7 +41,7 @@
    * @param seq  Initial sequence number of the pointer
    */
   Leaf (NameInfoConstPtr info, const SeqNo &seq);
-  virtual ~Leaf () { }
+  virtual ~Leaf () = 0;
   
   /**
    * @brief Get name of the leaf
diff --git a/wscript b/wscript
index b5e60a8..97e10a8 100644
--- a/wscript
+++ b/wscript
@@ -13,6 +13,7 @@
     conf.load("compiler_cxx")
     conf.check_cfg(atleast_pkgconfig_version='0.20')
     conf.check_cfg(package='openssl', args=['--cflags', '--libs'], uselib_store='SSL')
+    conf.check_cfg(package='libxml-2.0', args=['--cflags', '--libs'], uselib_store='XML')
     conf.define ('STANDALONE', 1)
     # conf.define ('DIGEST_BASE64', 1) # base64 is not working and probably will not work at all
 
@@ -26,7 +27,7 @@
                features=['cxx', 'cxxshlib'],
                source = bld.path.ant_glob(['model/sync-*.cc',
                                            'helper/sync-*.cc']),
-               uselib = 'BOOST BOOST_IOSTREAMS SSL'
+               uselib = 'BOOST BOOST_IOSTREAMS SSL XML'
                )
 
     # Unit tests