diff --git a/script/py/pack_examples.py b/script/py/pack_examples.py
new file mode 100644
index 0000000000000000000000000000000000000000..d482a055717a640f558d5864a50e46d3173f9a75
--- /dev/null
+++ b/script/py/pack_examples.py
@@ -0,0 +1,93 @@
+__author__ = 'i-bird'
+
+import os
+import shutil, errno
+import configparser
+from os import listdir
+from os.path import isdir, join
+
+class pack_example:
+    temporary=os.sep + "tmp" + os.sep + "pack_example"
+    base_dir=""
+
+    # Get the files to copy
+    def get_files(self,dir):
+        config = configparser.ConfigParser()
+        config.read(dir+os.sep+"config.cfg")
+        files = []
+        if "pack" in config:
+            if "files" in config["pack"]:
+                files = config["pack"]["files"]
+                files = str.split(files)
+                # for each filr add the prefix
+                for i in range(0,len(files)):
+                    files[i] = dir+os.sep+files[i]
+        return files
+
+    # If the directory is an example
+    def is_example(self,dir):
+        return os.path.isfile(dir+os.sep+"config.cfg")
+
+    # Get the files to pack
+    def copy_example(self,dir):
+        print("Processing: " + dir)
+        files=self.get_files(dir)
+
+        try:
+            # Create the temporary folder
+            os.makedirs(self.temporary)
+        except FileExistsError:
+            pass
+
+        # make the example directory
+
+        if len(files) != 0:
+            head, tail = os.path.split(files[0])
+            try:
+                os.makedirs(self.temporary+os.sep+head[len(self.base_dir):])
+            except FileExistsError:
+                pass
+
+        for file in files:
+            print("copy src:"+file+"    dst:"+self.temporary+os.sep+file[len(self.base_dir):])
+            shutil.copy(file,self.temporary+os.sep+file[len(self.base_dir):])
+
+
+    # Add examples in a recursive way
+    def add_r(self, dir):
+        if self.is_example(dir):
+            self.copy_example(dir)
+
+        # copy Makefile
+        print("copy src:"+dir+os.sep+"Makefile"+"    dst:"+self.temporary+os.sep+"Makefile")
+        shutil.copy(dir+os.sep+"Makefile",self.temporary+os.sep+"Makefile")
+
+        # List all the folder in the directory
+        onlydir = [ f for f in listdir(dir) if isdir(join(dir,f)) ]
+        for example_dir in onlydir:
+            self.add_r(dir+os.sep+example_dir)
+
+    # Add an example path
+    def pack(self, dir, file):
+
+        # Remove temporary folders and recreate it
+        if os.path.exists(self.temporary):
+            shutil.rmtree(self.temporary)
+        os.makedirs(self.temporary)
+
+        if self.is_example(dir):
+            self.copy_example(dir)
+
+        self.base_dir = dir
+
+        # copy Makefile
+        print("copy src:"+dir+os.sep+"Makefile"+"    dst:"+self.temporary+os.sep+"Makefile")
+        shutil.copy(dir+os.sep+"Makefile",self.temporary+os.sep+"Makefile")
+
+        # List all the folder in the directory
+        onlydir = [ f for f in listdir(dir) if isdir(join(dir,f)) ]
+        for example_dir in onlydir:
+            self.add_r(dir+os.sep+example_dir)
+
+        # make an archive
+        shutil.make_archive(file,"bztar",self.base_dir)
diff --git a/script/py/process_examples.py b/script/py/process_examples.py
new file mode 100644
index 0000000000000000000000000000000000000000..a77878e51c10bb657e8c81362a21ecc8d5429c40
--- /dev/null
+++ b/script/py/process_examples.py
@@ -0,0 +1,20 @@
+# python script that process the examples in particular it pack the examples, it generates the vtk files,
+# the images out of the vtk files, the mardown wiki pages
+
+import argparse
+import os
+from os import listdir
+from os.path import isdir, join
+from pack_examples import pack_example
+
+parser = argparse.ArgumentParser(description='Pack the examples, generate the vtk files to generate images, create the markdown pages for the wiki')
+parser.add_argument('directory', help='directory where are located the examples')
+args = parser.parse_args()
+
+# List all the folder in the directory
+
+onlydir = [ f for f in listdir(args.directory) if isdir(join(args.directory,f)) ]
+
+p = pack_example()
+p.pack(args.directory,args.directory+os.sep+"examples")
+
diff --git a/src/Makefile.am b/src/Makefile.am
index e6d114993d0982108b616d7cb63e91678c8be5f0..ca6f045b8902af2c85dab93dd3d8c92049e9ed95 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -11,7 +11,7 @@ nobase_include_HEADERS = Decomposition/CartDecomposition.hpp Decomposition/commo
          Grid/grid_dist_id.hpp Grid/grid_dist_id_iterator.hpp Grid/grid_dist_key.hpp \
          Vector/vector_dist.hpp Vector/vector_dist_iterator.hpp Vector/vector_dist_key.hpp \
          config/config.h \
-         SubdomainGraphNodes.hpp
+         metis_util.hpp dec_optimizer.hpp SubdomainGraphNodes.hpp
 
 .cu.o :
 	$(NVCC) $(NVCCFLAGS) -o $@ -c $<