This component used to test smart_ptr
diff --git a/bridge.h b/bridge.h
index e69de29..4cfe707 100644
--- a/bridge.h
+++ b/bridge.h
@@ -0,0 +1,32 @@
+#ifndef BRIDGE_H
+#define BRIDGE_H
+
+#include "./component.h"
+
+class BRIDGE : public COMPONENT {
+public:
+    BRIDGE() {};
+    BRIDGE(const OBJ_CMD in_, const OBJ_CMD out_, int num_, string name_, char *pstr_, int str_length_, int *piarray_, int array_size_) :
+        COMPONENT(in_, out_, num_, name_), pstr(pstr_), str_length(str_length_), piarray(piarray_), array_size(array_size_)
+    {}
+    ~BRIDGE() {};
+private:
+    char *pstr;
+    int str_length;
+    int *piarray;
+    int array_size;
+private:
+    friend class boost::serialization::access;
+    template <class Archive>
+    void serialize(Archive &ar, const unsigned int version) {
+        ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(COMPONENT);
+        ar & make_nvp("test_string" , make_array(pstr, str_length));
+        ar & make_nvp("test_int_array" , make_array(piarray, array_size));
+
+    }
+    virtual string description(void) const {
+        return "This is a bridge";
+    }
+};
+
+#endif
diff --git a/framework.h b/framework.h
index 1d20b74..4da4f1b 100644
--- a/framework.h
+++ b/framework.h
@@ -5,6 +5,7 @@

 class CORE;
 class MEMORY;
+class BRIDGE;

 class FRAMEWORK {
 public:
@@ -22,6 +23,7 @@ private:
     void serialize(Archive &ar, const unsigned int version) {
         ar.register_type(static_cast<CORE*>(NULL));
         ar.register_type(static_cast<MEMORY*>(NULL));
+        ar.register_type(static_cast<BRIDGE*>(NULL));
         ar & BOOST_SERIALIZATION_NVP(components);
     }
 };
diff --git a/global.h b/global.h
index 65b1bf4..6008ba7 100644
--- a/global.h
+++ b/global.h
@@ -6,7 +6,7 @@
 #include <iostream>
 #include <fstream>
 #include <string>
-
+#include <cstring>
 #include <boost/archive/tmpdir.hpp>

 #include <boost/archive/xml_iarchive.hpp>
@@ -19,6 +19,8 @@

 using boost::archive::xml_oarchive;
 using boost::archive::xml_iarchive;
+using boost::serialization::make_array;
+using boost::serialization::make_nvp;
 using std::string;
 using std::ostream;
 using std::list;
diff --git a/test1.cpp b/test1.cpp
index 12673b2..9f32c98 100644
--- a/test1.cpp
+++ b/test1.cpp
@@ -1,6 +1,7 @@
 #include "./framework.h"
 #include "./core.h"
 #include "./memory.h"
+#include "./bridge.h"

 void save_framework(FRAMEWORK &fs, const char* filename) {

@@ -28,12 +29,21 @@ int main(int argc, char *argv[])
     COMPONENT_PTR core2 = new CORE(in, out, 5, "core2", 555, 666, 777, 888);
     COMPONENT_PTR core3 = new CORE(in, out, 5, "core3", 121, 454, 787, 131);
     COMPONENT_PTR memory0 = new MEMORY(in, out, 10, "memory0", 1024, 8192, 0x40000000);
+    int a = 12345;
+    char str[] = "hello world";
+    int length = sizeof(str);
+    int b[] = {
+        1, 2, 3, 4, 5, 6
+    };
+    int size = sizeof(b) / sizeof(b[0]);
+    COMPONENT_PTR bridge0 = new BRIDGE(in, out, 60, "bridge0", str, length, b, size);

     fs.append(core0);
     fs.append(core1);
     fs.append(core2);
     fs.append(core3);
     fs.append(memory0);
+    fs.append(bridge0);

     cout << "Components filled OK!" << endl << endl;

@@ -52,6 +62,7 @@ int main(int argc, char *argv[])
     delete core2;
     delete core3;
     delete memory0;
+    delete bridge0;

     return 0;
 }
diff --git a/test1.cpp b/test1.cpp
index 9f32c98..1c4652f 100644
--- a/test1.cpp
+++ b/test1.cpp
@@ -4,7 +4,6 @@
 #include "./bridge.h"

 void save_framework(FRAMEWORK &fs, const char* filename) {
-
     ofstream ofs(filename);
     assert(ofs.good());
     xml_oarchive oa(ofs);