diff --git a/src/VTKWriter_dist_graph.hpp b/src/VTKWriter_dist_graph.hpp
deleted file mode 100644
index b07269a3c4ad3b6ef38a17850b1c51c9a4dda2d5..0000000000000000000000000000000000000000
--- a/src/VTKWriter_dist_graph.hpp
+++ /dev/null
@@ -1,1259 +0,0 @@
-/*
- * VTKWriter_graph.hpp
- *
- *  Created on: May 5, 2015
- *      Author: Pietro Incardona
- */
-
-#ifndef VTKWRITER_DIST_GRAPH_HPP_
-#define VTKWRITER_DIST_GRAPH_HPP_
-
-#include "VCluster.hpp"
-
-/*! Property data store for scalar and vector
- *
- */
-template<bool is_array>
-struct vtk_dist_vertex_node_array_scalar_selector
-{
-	/*! /brief Print the geometric informations in case it is not an array
-	 *
-	 * \tparam T Type of the vertex
-	 * \tparam ele_v Attribute element to check
-	 * \tparam G Graph of reference
-	 * \tparam s_type Vertex spatial type information
-	 *
-	 * \param vo Vertex object container
-	 * \param x Array to store geometric informations
-	 * \param z_set Value set to true id z axis is in use
-	 */
-	template<typename T, typename ele_v, typename G, typename s_type>
-	static inline void move(typename G::V_container &vo, s_type (&x)[3], bool &z_set)
-	{
-		if (G::V_type::attributes::name[T::value] == "x")
-		{
-			x[0] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>())>::type>::template to<s_type>(vo.template get<T::value>());
-		}
-		else if (G::V_type::attributes::name[T::value] == "y")
-		{
-			x[1] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>())>::type>::template to<s_type>(vo.template get<T::value>());
-		}
-		else if (G::V_type::attributes::name[T::value] == "z")
-		{
-			x[2] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>())>::type>::template to<s_type>(vo.template get<T::value>());
-			z_set = true;
-		}
-	}
-};
-
-/*! Template specialization in the case of array type attribute
- *
- */
-template<>
-struct vtk_dist_vertex_node_array_scalar_selector<true>
-{
-	/*! \brief Store the geometric informations in case it is an array
-	 *
-	 * \tparam T Type of the vertex
-	 * \tparam ele_v Attribute element to check
-	 * \tparam G Graph of reference
-	 * \tparam s_type Vertex spatial type information
-	 *
-	 * \param vo Vertex object container
-	 * \param x Array to store geometric informations
-	 * \param z_set Value set to true id z axis is in use
-	 */
-	template<typename T, typename ele_v, typename G, typename s_type>
-	static inline void move(typename G::V_container &vo, s_type (&x)[3], bool &z_set)
-	{
-		if (std::extent<ele_v>::value == 3)
-			z_set = true;
-
-		for (size_t i = 0; i < std::extent<ele_v>::value; i++)
-			x[i] = convert<typename boost::remove_reference<decltype(vo.template get<T::value>()[i])>::type>::template to<s_type>(vo.template get<T::value>()[i]);
-
-	}
-};
-
-/*! \brief this class is a functor for "for_each" algorithm
- *
- * This class is a functor for "for_each" algorithm. For each
- * element of the boost::vector the operator() is called.
- * Is mainly used to create a string containing all the vertex
- * properties
- *
- * \tparam G graph type
- * \tparam attr has the vertex attributes
- *
- */
-
-template<typename G, bool attr>
-struct vtk_dist_vertex_node
-{
-	// Vertex spatial type information
-	typedef typename G::V_type::s_type s_type;
-
-	bool z_set;
-
-	s_type (&x)[3];
-
-	// Vertex object container
-	typename G::V_container & vo;
-
-	// vertex node string
-	std::string & v_node;
-
-	/*! \brief Constructor
-	 *
-	 * Create a vertex properties list
-	 *
-	 * \param v_node std::string that is filled with the graph properties in the GraphML format
-	 * \param n_obj object container to access its properties for example encapc<...>
-	 *
-	 */
-	vtk_dist_vertex_node(std::string & v_node, typename G::V_container & n_obj, s_type (&x)[3]) :
-			x(x), vo(n_obj), v_node(v_node), z_set(false)
-	{
-	}
-	;
-
-	//! \brief Write collected information
-	void write()
-	{
-		v_node += std::to_string(x[0]) + " " + std::to_string(x[1]) + " " + std::to_string(x[2]) + "\n";
-	}
-
-	//! It call the functor for each member
-	template<typename T>
-	void operator()(T& t)
-	{
-		typedef typename boost::mpl::at<typename G::V_type::type, boost::mpl::int_<T::value>>::type ele_v;
-
-		// if the attribute name is x y or z, create a string with the value of the properties and store it
-
-		vtk_dist_vertex_node_array_scalar_selector<std::is_array<ele_v>::value>::template move<T, ele_v, G, s_type>(vo, x, z_set);
-
-	}
-};
-
-/*! \brief this class is a functor for "for_each" algorithm
- *
- * This class is a functor for "for_each" algorithm. For each
- * element of the boost::vector the operator() is called.
- * Is mainly used to create a string containing all the vertex
- * properties
- *
- * Specialization when we do not have vertex attributes
- *
- * \tparam G graph type
- *
- */
-
-template<typename G>
-struct vtk_dist_vertex_node<G, false>
-{
-	// Vertex object container
-	typename G::V_container & vo;
-
-	// vertex node string
-	std::string & v_node;
-
-	/*! \brief Constructor
-	 *
-	 * Create a vertex properties list
-	 *
-	 * \param v_node std::string that is filled with the graph properties in the GraphML format
-	 * \param n_obj object container to access its properties for example encapc<...>
-	 *
-	 */
-	vtk_dist_vertex_node(std::string & v_node, typename G::V_container & n_obj) :
-			vo(n_obj), v_node(v_node)
-	{
-	}
-	;
-
-	//! It call the functor for each member
-	template<typename T>
-	void operator()(T& t)
-	{
-		v_node += "0 0 0\n";
-	}
-};
-
-/*! \brief this class is a functor for "for_each" algorithm
- *
- * This class is a functor for "for_each" algorithm. For each
- * element of the boost::vector the operator() is called.
- * Is mainly used to create a string containing all the edge
- * properties
- *
- */
-
-template<typename G>
-struct vtk_dist_edge_node
-{
-	// Vertex object container
-	typename G::E_container & vo;
-
-	// edge node string
-	std::string & e_node;
-
-	/*! \brief Constructor
-	 *
-	 * Create an edge node
-	 *
-	 * \param e_node std::string that is filled with the graph properties in the GraphML format
-	 * \param n_obj object container to access the object properties for example encapc<...>
-	 * \param n_prop number of properties
-	 *
-	 */
-	vtk_dist_edge_node(std::string & e_node, typename G::E_container & n_obj) :
-			vo(n_obj), e_node(e_node)
-	{
-	}
-	;
-
-	/*! \brief Create a new node
-	 *
-	 * \param vc node number
-	 *
-	 */
-	void new_node(size_t v_c, size_t s, size_t d)
-	{
-		// start a new node
-		e_node += "2 " + std::to_string(s) + " " + std::to_string(d) + "\n";
-	}
-};
-
-/*! \brief Property writer for scalar and vector
- *
- */
-template<bool is_array>
-struct dist_prop_output_array_scalar_selector_vertex
-{
-	/*! \brief Writer in case the property is not an array
-	 *
-	 * \tparam ele_v Property element
-	 * \tparam Graph Graph of reference
-	 * \tparam i Property id
-	 *
-	 * \param v_out Buffer to write into
-	 * \param g Graph
-	 * \param p Property id
-	 */
-	template<typename ele_v, typename Graph, unsigned int i>
-	static inline void write(std::string &v_out, const Graph &g, size_t p)
-	{
-		v_out += std::to_string(g.vertex(p).template get<i>()) + "\n";
-	}
-};
-
-/*! \brief Property writer for vector
- *
- */
-template<>
-struct dist_prop_output_array_scalar_selector_vertex<true>
-{
-	/*! \brief Writer in case the property is an array
-	 *
-	 * \tparam ele_v Property element
-	 * \tparam Graph Graph of reference
-	 * \tparam i Property id
-	 *
-	 * \param v_out Buffer to write into
-	 * \param g Graph
-	 * \param p Property id
-	 */
-	template<typename ele_v, typename Graph, unsigned int i>
-	static inline void write(std::string &v_out, const Graph &g, size_t p)
-	{
-		for (size_t j = 0; j < 2; j++)
-		{
-			v_out += std::to_string(g.vertex(p).template get<i>()[j]) + " ";
-		}
-
-		if (std::extent<ele_v>::value == 2)
-			v_out += "0";
-		else
-			v_out += std::to_string(g.vertex(p).template get<i>()[2]);
-
-		v_out += "\n";
-	}
-};
-
-/*! \brief Property writer for scalar and vector
- *
- */
-template<bool is_array>
-struct dist_prop_output_array_scalar_selector_edge
-{
-	/*! \brief Writer in case the property is not an array
-	 *
-	 * \tparam ele_v Property element
-	 * \tparam Graph Graph of reference
-	 * \tparam i Property id
-	 *
-	 * \param v_out Buffer to write into
-	 * \param g Graph
-	 * \param p Property id
-	 */
-	template<typename ele_v, typename Graph, unsigned int i>
-	static inline void write(std::string &v_out, const Graph &g, const typename Graph::E_container &edge)
-	{
-		v_out += std::to_string(edge.template get<i>()) + "\n";
-	}
-};
-
-/*! \brief Property writer for vector
- *
- */
-template<>
-struct dist_prop_output_array_scalar_selector_edge<true>
-{
-	/*! \brief Writer in case the property is an array
-	 *
-	 * \tparam ele_v Property element
-	 * \tparam Graph Graph of reference
-	 * \tparam i Property id
-	 *
-	 * \param v_out Buffer to write into
-	 * \param g Graph
-	 * \param p Property id
-	 */
-	template<typename ele_v, typename Graph, unsigned int i>
-	static inline void write(std::string &v_out, const Graph &g, const typename Graph::E_container &edge)
-	{
-		for (size_t j = 0; j < 2; j++)
-		{
-			v_out += std::to_string(edge.template get<i>()[j]) + " ";
-		}
-
-		if (std::extent<ele_v>::value == 2)
-			v_out += "0";
-		else
-			v_out += std::to_string(edge.template get<i>()[2]);
-
-		v_out += "\n";
-	}
-};
-
-/*! \brief Property writer for scalar and vector, it fill the vertex data (needed for edge representation in vtk)
- *
- */
-template<bool is_array>
-struct dist_prop_output_array_scalar_selector_edge_fill_vertex
-{
-	/*! \brief Writer in case the property is not an array
-	 *
-	 * \param v_out Buffer to write into
-	 */
-	static inline void write(std::string &v_out)
-	{
-		v_out += "0\n";
-	}
-};
-
-/*! \brief Property writer for vector
- *
- */
-template<>
-struct dist_prop_output_array_scalar_selector_edge_fill_vertex<true>
-{
-	/*! \brief Writer in case the property is an array
-	 *
-	 * \param v_out Buffer to write into
-	 */
-	static inline void write(std::string &v_out)
-	{
-		v_out += "0 0 0\n";
-	}
-};
-
-/*! \brief This class specialize functions in the case the type T
- * has or not defined attributes
- *
- * In C++ partial specialization of a function is not allowed so we have to
- * encapsulate this function in a class
- *
- * \tparam has_attributes parameter that specialize the function in case the vertex
- *         define or not attributes name
- *
- * \tparam Graph type of graph we are processing
- * \tparam i the property we are going to write
- *
- */
-
-template<bool has_attributes, typename Graph, unsigned int i>
-class dist_prop_output
-{
-public:
-
-	/*! \brief For each vertex set the value
-	 *
-	 * \tparam i vertex property to print
-	 *
-	 */
-
-	static std::string get_point_data(const Graph & g)
-	{
-		//! vertex node output string
-		std::string v_out;
-
-		//! Get a vertex iterator
-		auto it = g.getVertexIterator();
-
-		// if there is the next element
-		while (it.isNext())
-		{
-			typedef typename boost::mpl::at<typename Graph::V_type::type, boost::mpl::int_<i>>::type ele_v;
-			dist_prop_output_array_scalar_selector_vertex<std::is_array<ele_v>::value>::template write<ele_v, Graph, i>(v_out, g, it.get());
-
-			// increment the iterator and counter
-			++it;
-		}
-
-		return v_out;
-	}
-
-	/*! \brief For each edge set the value, set 1 on vertices, needed by vtk file format
-	 *
-	 * \tparam i edge property to print
-	 *
-	 */
-
-	static std::string get_cell_data(const Graph & g)
-	{
-		//! vertex node output string
-		std::string e_out;
-
-		//! Get a vertex iterator
-		auto it_v = g.getVertexIterator();
-
-		// if there is the next element
-		while (it_v.isNext())
-		{
-			// Print the property
-			typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type ele_v;
-			dist_prop_output_array_scalar_selector_edge_fill_vertex<std::is_array<ele_v>::value>::write(e_out);
-
-			// increment the iterator and counter
-			++it_v;
-		}
-
-		//! Get an edge iterator
-		auto it_e = g.getEdgeIterator();
-
-		// if there is the next element
-		while (it_e.isNext())
-		{
-			typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type ele_v;
-			dist_prop_output_array_scalar_selector_edge<std::is_array<ele_v>::value>::template write<ele_v, Graph, i>(e_out, g, g.edge(it_e.get()));
-
-			// increment the iterator and counter
-			++it_e;
-		}
-
-		return e_out;
-	}
-
-	/*! \brief Given a Graph return the point data header for a typename T
-	 *
-	 * \tparam T type to write
-	 * \param n_node number of the node
-	 *
-	 */
-
-	static std::string get_point_property_header(size_t prop)
-	{
-		//! vertex node output string
-		std::string v_out;
-
-		// Type of the property
-		std::string type;
-
-		typedef typename boost::mpl::at<typename Graph::V_type::type, boost::mpl::int_<i>>::type T;
-
-		// Check if T is a supported format
-		// for now we support only scalar of native type
-		if (std::is_array<T>::value == true && std::is_array<typename std::remove_extent<T>::type>::value == false)
-		{
-			//Get type of the property
-			type = getType<typename std::remove_all_extents<T>::type>();
-
-			// if the type is not supported return
-			if (type.size() == 0)
-				return v_out;
-
-			// Create point data properties
-			v_out += "VECTORS " + get_attributes_vertex() + " " + type + "\n";
-		}
-		else
-		{
-			type = getType<T>();
-
-			// if the type is not supported return
-			if (type.size() == 0)
-				return v_out;
-
-			// Create point data properties
-			v_out += "SCALARS " + get_attributes_vertex() + " " + type + "\n";
-
-			// Default lookup table
-			v_out += "LOOKUP_TABLE default\n";
-
-		}
-
-		// return the vertex list
-		return v_out;
-	}
-
-	/*! \brief Given a Graph return the cell data header for a typename T
-	 *
-	 * \tparam T type to write
-	 * \param n_node number of the node
-	 *
-	 */
-
-	static std::string get_cell_property_header(size_t prop)
-	{
-		//! edge node output string
-		std::string e_out;
-
-		// Type of the property
-		std::string type;
-
-		typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type T;
-
-		// Check if T is a supported format
-		// for now we support only scalar of native type
-		if (std::is_array<T>::value == true && std::is_array<typename std::remove_extent<T>::type>::value == false)
-		{
-			//Get type of the property
-			type = getType<typename std::remove_all_extents<T>::type>();
-
-			// if the type is not supported return
-			if (type.size() == 0)
-				return e_out;
-
-			// Create point data properties
-			e_out += "VECTORS " + get_attributes_edge() + " " + type + "\n";
-		}
-		else
-		{
-			type = getType<T>();
-
-			// if the type is not supported return
-			if (type.size() == 0)
-				return e_out;
-
-			// Create point data properties
-			e_out += "SCALARS " + get_attributes_edge() + " " + type + "\n";
-
-			// Default lookup table
-			e_out += "LOOKUP_TABLE default\n";
-
-		}
-
-		// return the vertex list
-		return e_out;
-	}
-
-	/*! \brief Get the attributes name for vertex
-	 *
-	 */
-
-	static std::string get_attributes_vertex()
-	{
-		return Graph::V_type::attributes::name[i];
-	}
-
-	/*! \brief Get the attributes name for edge
-	 *
-	 */
-
-	static std::string get_attributes_edge()
-	{
-		return Graph::E_type::attributes::name[i];
-	}
-};
-
-/*! \brief This class specialize functions in the case the type T
- * has not defined attributes
- *
- * In C++ partial specialization of a function is not allowed so we have to
- * encapsulate this function in a class
- *
- * \tparam has_attributes parameter that specialize the function in case the vertex
- *         define or not attributes name
- *
- * \tparam i id of the property we are going to write
- *
- */
-
-template<typename Graph, unsigned int i>
-class dist_prop_output<false, Graph, i>
-{
-	/*! \brief For each vertex set the value
-	 *
-	 * \tparam i vertex property to print
-	 *
-	 */
-
-	static std::string get_point_data(Graph & g)
-	{
-		//! vertex node output string
-		std::string v_out;
-
-		//! Get a vertex iterator
-		auto it = g.getVertexIterator();
-
-		// if there is the next element
-		while (it.isNext())
-		{
-			// Print the property
-			v_out += std::to_string(g.vertex(it.get()).template get<i>()) + "\n";
-
-			// increment the iterator and counter
-			++it;
-		}
-
-		return v_out;
-	}
-
-	/*! \brief For each edge set the value
-	 *
-	 * \tparam i edge property to print
-	 *
-	 */
-
-	static std::string get_cell_data(const Graph & g)
-	{
-		//! vertex node output string
-		std::string e_out;
-
-		//! Get a vertex iterator
-		auto it_v = g.getVertexIterator();
-
-		// if there is the next element
-		while (it_v.isNext())
-		{
-			// Print the property
-			e_out += std::to_string(0) + "\n";
-
-			// increment the iterator and counter
-			++it_v;
-		}
-
-		//! Get an edge iterator
-		auto it_e = g.getEdgeIterator();
-
-		// if there is the next element
-		while (it_e.isNext())
-		{
-			// Print the property
-			e_out += std::to_string(g.edge(it_e.get()).template get<i>()) + "\n";
-
-			// increment the iterator and counter
-			++it_e;
-		}
-
-		return e_out;
-	}
-
-	/*! \brief Given a Graph return the point data header for a typename T
-	 *
-	 * \tparam T type to write
-	 *
-	 * \param n_node number of the node
-	 * \param prop id of the property
-	 *
-	 */
-
-	static std::string get_point_property_header(size_t prop)
-	{
-		//! vertex node output string
-		std::string v_out;
-
-		// Check if T is a supported format
-		// for now we support only scalar of native type
-
-		std::string type = getType<boost::fusion::result_of::at<typename Graph::V_type::type, boost::mpl::int_<i>>>("attr" + std::to_string(prop));
-
-		// if the type is not supported return
-		if (type.size() == 0)
-		{
-			return v_out;
-		}
-
-		// Create point data properties
-		v_out += "SCALARS " + get_attributes_vertex() + " " + type + "\n";
-
-		// Default lookup table
-		v_out += "LOOKUP_TABLE default\n";
-
-		// return the vertex list
-		return v_out;
-	}
-
-	/*! \brief Given a Graph return the cell data header for a typename T
-	 *
-	 * \param n_node number of the node
-	 *
-	 */
-
-	static std::string get_cell_property_header(size_t prop)
-	{
-		//! edge node output string
-		std::string e_out;
-
-		// Type of the property
-		std::string type;
-
-		typedef typename boost::mpl::at<typename Graph::E_type::type, boost::mpl::int_<i>>::type T;
-
-		// Check if T is a supported format
-		// for now we support only scalar of native type
-		if (std::is_array<T>::value == true && std::is_array<typename std::remove_extent<T>::type>::value == false)
-		{
-			//Get type of the property
-			type = getType<typename std::remove_all_extents<T>::type>();
-
-			// if the type is not supported return
-			if (type.size() == 0)
-				return e_out;
-
-			// Create point data properties
-			e_out += "VECTORS " + get_attributes_edge() + " " + type + "\n";
-		}
-		else
-		{
-			type = getType<T>();
-
-			// if the type is not supported return
-			if (type.size() == 0)
-				return e_out;
-
-			// Create point data properties
-			e_out += "SCALARS " + get_attributes_edge() + " " + type + "\n";
-
-			// Default lookup table
-			e_out += "LOOKUP_TABLE default\n";
-
-		}
-
-		// return the vertex list
-		return e_out;
-	}
-
-	/*! \brief Get the attributes name for vertex
-	 *
-	 */
-
-	static std::string get_attributes_vertex()
-	{
-		return Graph::V_type::attributes::name[i];
-	}
-
-	/*! \brief Get the attributes name for edge
-	 *
-	 */
-
-	static std::string get_attributes_edge()
-	{
-		return Graph::E_type::attributes::name[i];
-	}
-};
-
-/*! \brief this class is a functor for "for_each" algorithm
- *
- * This class is a functor for "for_each" algorithm. For each
- * element of the boost::vector the operator() is called.
- * Is mainly used to produce at output for each property
- *
- * \tparam Graph graph we are processing
- *
- * \param dim Dimensionality
- * \param S type of grid
- *
- */
-
-template<typename Graph>
-struct dist_prop_out_vertex
-{
-	// property output string
-	std::string & v_out;
-
-	// Graph that we are processing
-	const Graph & g;
-
-	/*! \brief constructor
-	 *
-	 * \param v_out string to fill with the vertex properties
-	 *
-	 */
-	dist_prop_out_vertex(std::string & v_out, const Graph & g) :
-			v_out(v_out), g(g)
-	{
-	}
-	;
-
-	//! It produce an output for each property
-	template<typename T>
-	void operator()(T& t) const
-	{
-		// actual string size
-		size_t sz = v_out.size();
-
-		// Produce the point properties header
-		v_out += dist_prop_output<has_attributes<typename Graph::V_type>::value, Graph, T::value>::get_point_property_header(t);
-
-		// If the output has changed, we have to write the properties
-		if (v_out.size() != sz)
-		{
-			std::string attr = dist_prop_output<has_attributes<typename Graph::V_type>::value, Graph, T::value>::get_attributes_vertex();
-
-			// Produce point data
-			v_out += dist_prop_output<has_attributes<typename Graph::V_type>::value, Graph, T::value>::get_point_data(g);
-		}
-	}
-};
-
-/*! \brief this class is a functor for "for_each" algorithm
- *
- * This class is a functor for "for_each" algorithm. For each
- * element of the boost::vector the operator() is called.
- * Is mainly used to produce at output for each property
- *
- * \tparam Graph graph we are processing
- *
- * \param dim Dimensionality
- * \param S type of grid
- *
- */
-
-template<typename Graph>
-struct dist_prop_out_edge
-{
-	// property output string
-	std::string & e_out;
-
-	// Graph that we are processing
-	const Graph & g;
-
-	/*! \brief constructor
-	 *
-	 * \param v_out string to fill with the vertex properties
-	 *
-	 */
-	dist_prop_out_edge(std::string & e_out, const Graph & g) :
-			e_out(e_out), g(g)
-	{
-	}
-	;
-
-	//! It produce an output for each property
-	template<typename T>
-	void operator()(T& t) const
-	{
-		// actual string size
-		size_t sz = e_out.size();
-
-		// Produce the point properties header
-		e_out += dist_prop_output<has_attributes<typename Graph::E_type>::value, Graph, T::value>::get_cell_property_header(t);
-
-		// If the output has changed, we have to write the properties
-		if (e_out.size() != sz)
-		{
-			std::string attr = dist_prop_output<has_attributes<typename Graph::E_type>::value, Graph, T::value>::get_attributes_edge();
-
-			// Produce cell data
-			e_out += dist_prop_output<has_attributes<typename Graph::E_type>::value, Graph, T::value>::get_cell_data(g);
-		}
-	}
-};
-
-/*!
- *
- * It write a VTK format file in case for a graph
- *
- * \tparam Type of graph
- *
- */
-
-template<typename Graph>
-class VTKWriter<Graph, DIST_GRAPH>
-{
-	Graph & g;
-
-	/*! \brief It get the vertex properties list
-	 *
-	 * It get the vertex properties list of the vertex defined as VTK header
-	 *
-	 * \return a string that define the vertex properties in graphML format
-	 *
-	 */
-
-	std::string get_vertex_properties_list()
-	{
-		//! vertex property output string
-		std::string v_out;
-
-		// write the number of vertex
-		v_out += "VERTICES " + std::to_string(g.getNVertex()) + " " + std::to_string(g.getNVertex() * 2) + "\n";
-
-		// return the vertex properties string
-		return v_out;
-	}
-
-	/*! \brief It get the vertex properties list
-	 *
-	 * It get the vertex properties list of the vertex defined as a VTK header
-	 *
-	 * \return a string that define the vertex properties in graphML format
-	 *
-	 */
-
-	std::string get_point_properties_list()
-	{
-		//! vertex property output string
-		std::string v_out;
-
-		// write the number of vertex
-		v_out += "POINTS " + std::to_string(g.getNVertex()) + " float" + "\n";
-
-		// return the vertex properties string
-		return v_out;
-	}
-
-	std::string get_point_info()
-	{
-		//! vertex property output string
-		std::string v_out;
-
-		// write the ids
-		v_out += "SCALARS id unsigned_long\nLOOKUP_TABLE default\n";
-
-		for (size_t i = 0; i < g.getNVertex(); ++i)
-		{
-			v_out += std::to_string(g.getVertexId(i)) + "\n";
-		}
-
-		// write the ids
-		v_out += "SCALARS gid unsigned_long\nLOOKUP_TABLE default\n";
-
-		for (size_t i = 0; i < g.getNVertex(); ++i)
-		{
-			v_out += std::to_string(g.getVertexGlobalId(i)) + "\n";
-		}
-
-		// return the vertex properties string
-		return v_out;
-	}
-
-	/*! \brief It get the edge properties list
-	 *
-	 * It get the edge properties list of the edge defined as a GraphML header
-	 *
-	 * \return a string that define the edge properties in graphML format
-	 *
-	 */
-
-	std::string get_edge_properties_list()
-	{
-		//! vertex property output string
-		std::string e_out;
-
-		// write the number of lines
-		e_out += "LINES " + std::to_string(g.getNEdge()) + " " + std::to_string(3 * g.getNEdge()) + "\n";
-
-		// return the vertex properties string
-		return e_out;
-	}
-
-	/*! \brief Create the VTK point definition
-	 *
-	 * \tparam s_type spatial type of the data
-	 * \tparam attr false x,y,z are set to 0 for each vertex
-	 *
-	 */
-
-	template<bool attr> std::string get_point_list()
-	{
-		//! VTK spatial information
-		typename Graph::V_type::s_type x[3] = { 0, 0, 0 };
-
-		//! vertex node output string
-		std::string v_out;
-
-		//! Get a vertex iterator
-		auto it = g.getVertexIterator();
-
-		// if there is the next element
-		while (it.isNext())
-		{
-			// Get vtk vertex node
-			auto obj = g.vertex(it.get());
-
-			// create a vertex list functor
-			vtk_dist_vertex_node<Graph, attr> vn(v_out, obj, x);
-
-			// Iterate through all the vertex and create the vertex list
-			boost::mpl::for_each<boost::mpl::range_c<int, 0, Graph::V_type::max_prop> >(vn);
-
-			// write the node string
-			vn.write();
-
-			// increment the iterator and counter
-			++it;
-		}
-
-		// return the vertex list
-		return v_out;
-	}
-
-	/*! \brief Create the VTK vertex definition
-	 *
-	 * \tparam s_type spatial type of the data
-	 * \tparam attr false x,y,z are set to 0 for each vertex
-	 *
-	 */
-
-	std::string get_vertex_list()
-	{
-		//! vertex node output string
-		std::string v_out;
-
-		//! For each point create a vertex
-		for (size_t i = 0; i < g.getNVertex(); i++)
-		{
-			v_out += "1 " + std::to_string(i) + "\n";
-		}
-
-		// return the vertex list
-		return v_out;
-	}
-
-	/*! \brief Get the point data header
-	 *
-	 * \return a string with the point data header for VTK format
-	 *
-	 */
-
-	std::string get_point_data_header()
-	{
-		std::string v_out;
-
-		v_out += "POINT_DATA " + std::to_string(g.getNVertex()) + "\n";
-
-		return v_out;
-	}
-
-	/*! \brief Get the point data header
-	 *
-	 * \return a string with the point data header for VTK format
-	 *
-	 */
-
-	std::string get_cell_data_header()
-	{
-		std::string v_out;
-
-		v_out += "CELL_DATA " + std::to_string(g.getNVertex() + g.getNEdge()) + "\n";
-
-		return v_out;
-	}
-
-	/*! \brief Return the edge list
-	 *
-	 * \return the edge list
-	 *
-	 */
-
-	std::string get_edge_list()
-	{
-		//! edge node output string
-		std::string e_out;
-
-		//! Get an edge iterator
-		auto it = g.getEdgeIterator();
-
-		// if there is the next element
-		while (it.isNext())
-		{
-			// create an edge list functor
-//			edge_node<Graph> en(e_out,g.edge(it.get()));
-
-			e_out += "2 " + std::to_string(it.source()) + " " + std::to_string(g.nodeById(it.target())) + "\n";
-
-			// increment the operator
-			++it;
-		}
-
-		// return the edge list
-		return e_out;
-	}
-
-public:
-
-	/*!
-	 *
-	 * VTKWriter constructor, it take a graph and write a GraphML format
-	 *
-	 * \param g Graph to write
-	 *
-	 */
-	VTKWriter(Graph & g) :
-			g(g)
-	{
-	}
-
-	/*! \brief It write a VTK file from a graph
-	 *
-	 * \tparam prp_out which properties to output [default = -1 (all)]
-	 *
-	 * \param file path where to write
-	 * \param name of the graph
-	 * \param file_type specify if it is a VTK BINARY or ASCII file [default = ASCII]
-	 *
-	 */
-
-	template<int prp = -1> bool write(std::string file, std::string graph_name = "Graph", file_type ft = file_type::ASCII)
-	{
-
-		Vcluster & v_cl = *global_v_cluster;
-
-		g.deleteGhosts();
-
-		if (v_cl.getProcessUnitID() == 0)
-		{
-			for (size_t i = 0; i < g.getTotNVertex(); ++i)
-			{
-				g.reqVertex(i);
-			}
-		}
-
-		g.sync();
-
-		if (v_cl.getProcessUnitID() == 0)
-		{
-			// Check that the Vertex type define x y and z attributes
-
-			if (has_attributes<typename Graph::V_type>::value == false)
-			{
-				std::cerr << "Error writing a graph: Vertex must has defines x,y,z properties" << "\n";
-				return false;
-			}
-
-			// Header for the vtk
-			std::string vtk_header;
-			// Point list of the VTK
-			std::string point_list;
-			// Vertex list of the VTK
-			std::string vertex_list;
-			// Graph header
-			std::string vtk_binary_or_ascii;
-			// Edge list of the GraphML
-			std::string edge_list;
-			// vertex properties header
-			std::string point_prop_header;
-			// edge properties header
-			std::string vertex_prop_header;
-			// edge properties header
-			std::string edge_prop_header;
-			// Data point header
-			std::string point_data_header;
-			// Ids point
-			std::string point_ids;
-			// Data point
-			std::string point_data;
-			// Cell data header
-			std::string cell_data_header;
-			// Cell data
-			std::string cell_data;
-
-			// VTK header
-			vtk_header = "# vtk DataFile Version 3.0\n" + graph_name + "\n";
-
-			// Choose if binary or ASCII
-			if (ft == file_type::ASCII)
-			{
-				vtk_header += "ASCII\n";
-			}
-			else
-			{
-				vtk_header += "BINARY\n";
-			}
-
-			// Data type for graph is DATASET POLYDATA
-			vtk_header += "DATASET POLYDATA\n";
-
-			// point properties header
-			point_prop_header = get_point_properties_list();
-
-			// Get point list
-			point_list = get_point_list<has_attributes<typename Graph::V_type>::value>();
-
-			// vertex properties header
-			vertex_prop_header = get_vertex_properties_list();
-
-			// Get vertex list
-			vertex_list = get_vertex_list();
-
-			// Edge properties header
-			edge_prop_header = get_edge_properties_list();
-
-			// Get the edge graph list
-			edge_list = get_edge_list();
-
-			// Get the point data header
-			point_data_header = get_point_data_header();
-
-			// Get the point info
-			point_ids = get_point_info();
-
-			// Get the cell data header
-			cell_data_header = get_cell_data_header();
-
-			// For each property in the vertex type produce a point data
-
-			dist_prop_out_vertex<Graph> pp(point_data, g);
-
-			if (prp == -1)
-				boost::mpl::for_each<boost::mpl::range_c<int, 0, Graph::V_type::max_prop> >(pp);
-			else
-				boost::mpl::for_each<boost::mpl::range_c<int, prp, prp> >(pp);
-
-			// For each property in the edge type produce a point data
-
-			dist_prop_out_edge<Graph> ep(cell_data, g);
-
-			if (prp == -1)
-				boost::mpl::for_each<boost::mpl::range_c<int, 0, Graph::E_type::max_prop> >(ep);
-			else
-				boost::mpl::for_each<boost::mpl::range_c<int, prp, prp> >(ep);
-
-			// write the file
-			std::ofstream ofs(file);
-
-			// Check if the file is open
-			if (ofs.is_open() == false)
-			{
-				std::cerr << "Error cannot create the VTK file: " + file;
-			}
-
-			ofs << vtk_header << point_prop_header << point_list << vertex_prop_header << vertex_list << edge_prop_header << edge_list << point_data_header << point_ids << point_data << cell_data_header << cell_data;
-
-			// Close the file
-
-			ofs.close();
-
-		}
-
-		g.deleteGhosts();
-
-		// Completed succefully
-		return true;
-	}
-};
-
-#endif /* VTKWRITER_GRAPH_HPP_ */