diff --git a/MeshLib/Elements/Edge.h b/MeshLib/Elements/Edge.h
index 598b5dae57ecae4b12648e16eb6aa1c250f49b5b..4f23c6b762ccc574732e7cfb04046c1b4f56ec66 100644
--- a/MeshLib/Elements/Edge.h
+++ b/MeshLib/Elements/Edge.h
@@ -16,7 +16,7 @@
 
 namespace MeshLib {
 
-typedef TemplateEdge<1,2> Edge;
+typedef TemplateEdge<2> Edge;
 
 }
 
diff --git a/MeshLib/Elements/Element.h b/MeshLib/Elements/Element.h
index 3f43902829a2f99c17632e03cf6e047f4ce309c4..2d691317198bb34f87351d6e8b709ec49ef82793 100644
--- a/MeshLib/Elements/Element.h
+++ b/MeshLib/Elements/Element.h
@@ -89,11 +89,16 @@ public:
 	virtual unsigned getNNeighbors() const = 0;
 
 	/**
-	 * Get the number of nodes for this element with respect to the order.
-	 * @param order (default = 1)
-	 * @return the number of nodes with respect to the order.
+	 * Returns the number of nodes. In dependency of the parameter
+	 * the number of nodes for the geometric element is returned or
+	 * the total number of nodes associated with this element
+	 * is returned. The numbers can be different for instance if the
+	 * element is used for higher order elements in finite element
+	 * method.
+	 * @param all (default = false)
+	 * @return the number of nodes with respect to the parameter.
 	 */
-	virtual unsigned getNNodes(unsigned order = 1) const = 0;
+	virtual unsigned getNNodes(bool all = false) const = 0;
 
 	/// Returns the position of the given node in the node array of this element.
 	virtual unsigned getNodeIDinElement(const MeshLib::Node* node) const;
diff --git a/MeshLib/Elements/Hex.h b/MeshLib/Elements/Hex.h
index e21fbf2c31f7bc0a9e9ab4cd63196207ea9ad810..98c082ab04e3c38d3855783bf77182438f8525cf 100644
--- a/MeshLib/Elements/Hex.h
+++ b/MeshLib/Elements/Hex.h
@@ -15,7 +15,7 @@
 #include "TemplateHex.h"
 
 namespace MeshLib {
-typedef TemplateHex<1,8> Hex;
+typedef TemplateHex<8> Hex;
 }
 
 #endif /* HEX_H_ */
diff --git a/MeshLib/Elements/Prism.h b/MeshLib/Elements/Prism.h
index 0a442bc296570f5cd65333faea62fab7319de8c7..b17fd500b8071071a0f92be7efab58aef98dc522 100644
--- a/MeshLib/Elements/Prism.h
+++ b/MeshLib/Elements/Prism.h
@@ -16,7 +16,7 @@
 
 namespace MeshLib {
 
-typedef TemplatePrism<1,6> Prism;
+typedef TemplatePrism<6> Prism;
 
 }
 
diff --git a/MeshLib/Elements/Pyramid.h b/MeshLib/Elements/Pyramid.h
index 6d3a74363f35a44723fccec5f419620a27487aba..96343c38730721b9e0f4fc818727bf13428f585e 100644
--- a/MeshLib/Elements/Pyramid.h
+++ b/MeshLib/Elements/Pyramid.h
@@ -16,7 +16,7 @@
 
 namespace MeshLib {
 
-typedef TemplatePyramid<1,5> Pyramid;
+typedef TemplatePyramid<5> Pyramid;
 
 }
 
diff --git a/MeshLib/Elements/Quad.h b/MeshLib/Elements/Quad.h
index 0cc34b19bc9244384da5985538d827c44a7e261b..8b1e3af10e283c12414983799d264fac94f4e315 100644
--- a/MeshLib/Elements/Quad.h
+++ b/MeshLib/Elements/Quad.h
@@ -16,7 +16,7 @@
 
 namespace MeshLib {
 
-typedef TemplateQuad<1,4> Quad;
+typedef TemplateQuad<4> Quad;
 
 }
 
diff --git a/MeshLib/Elements/TemplateEdge.h b/MeshLib/Elements/TemplateEdge.h
index 50b6837b1b0ff7dcffbf42a7e225ac18e81d1deb..234173c52723bf3c4a96b437d690170d9e67064b 100644
--- a/MeshLib/Elements/TemplateEdge.h
+++ b/MeshLib/Elements/TemplateEdge.h
@@ -29,7 +29,7 @@ namespace MeshLib {
  *  0--------1
  * @endcode
  */
-template <unsigned ORDER, unsigned NNODES>
+template <unsigned NNODES>
 class TemplateEdge : public Element
 {
 public:
@@ -37,7 +37,7 @@ public:
 	TemplateEdge(Node* nodes[NNODES], unsigned value = 0);
 
 	/// Copy constructor
-	TemplateEdge(const TemplateEdge<ORDER, NNODES> &edge);
+	TemplateEdge(const TemplateEdge<NNODES> &edge);
 
 	/// Destructor
 	virtual ~TemplateEdge();
@@ -73,9 +73,9 @@ public:
 	unsigned getNNeighbors() const { return 0; };
 
 	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(unsigned order) const
+	virtual unsigned getNNodes(bool all = false) const
 	{
-		return order == ORDER ? NNODES : 2;
+		return all ? NNODES : 2;
 	}
 
 	/**
@@ -94,7 +94,7 @@ public:
 
 	virtual Element* clone() const
 	{
-		return new TemplateEdge<ORDER,NNODES>(*this);
+		return new TemplateEdge<NNODES>(*this);
 	}
 
 	/**
diff --git a/MeshLib/Elements/TemplateEdge.tpp b/MeshLib/Elements/TemplateEdge.tpp
index 175db9db6ea8c0083e2ea88d54f43f30fb27f89a..19a44c28e8d94a48a7baccf125512cb10a83b4a9 100644
--- a/MeshLib/Elements/TemplateEdge.tpp
+++ b/MeshLib/Elements/TemplateEdge.tpp
@@ -11,16 +11,16 @@
 
 namespace MeshLib {
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateEdge<ORDER,NNODES>::TemplateEdge(Node* nodes[NNODES], unsigned value) :
+template <unsigned NNODES>
+TemplateEdge<NNODES>::TemplateEdge(Node* nodes[NNODES], unsigned value) :
 	Element(value)
 {
 	_nodes = nodes;
 	this->_length = this->computeVolume();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateEdge<ORDER,NNODES>::TemplateEdge(const TemplateEdge<ORDER, NNODES> &edge) :
+template <unsigned NNODES>
+TemplateEdge<NNODES>::TemplateEdge(const TemplateEdge<NNODES> &edge) :
 	Element(edge.getValue())
 {
 	_nodes = new Node*[NNODES];
@@ -29,8 +29,8 @@ TemplateEdge<ORDER,NNODES>::TemplateEdge(const TemplateEdge<ORDER, NNODES> &edge
 	_length = edge.getLength();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateEdge<ORDER,NNODES>::~TemplateEdge()
+template <unsigned NNODES>
+TemplateEdge<NNODES>::~TemplateEdge()
 {}
 
 } // namespace MeshLib
diff --git a/MeshLib/Elements/TemplateHex.h b/MeshLib/Elements/TemplateHex.h
index 9eca86b7627bf0e3ff5585f686f3c2d60614e887..a42b9f7400ec3dbb714668738a23665274d6d35c 100644
--- a/MeshLib/Elements/TemplateHex.h
+++ b/MeshLib/Elements/TemplateHex.h
@@ -42,7 +42,7 @@ namespace MeshLib {
  *
  * @endcode
  */
-template <unsigned ORDER, unsigned NNODES>
+template <unsigned NNODES>
 class TemplateHex : public Cell
 {
 public:
@@ -50,7 +50,7 @@ public:
 	TemplateHex(Node* nodes[8], unsigned value = 0);
 
 	/// Copy constructor
-	TemplateHex(const TemplateHex<ORDER,NNODES> &hex);
+	TemplateHex(const TemplateHex<NNODES> &hex);
 
 	/// Destructor
 	virtual ~TemplateHex();
@@ -71,9 +71,9 @@ public:
 	unsigned getNNeighbors() const { return 6; };
 
 	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(unsigned order = 1) const
+	virtual unsigned getNNodes(bool all = false) const
 	{
-		return order == ORDER ? NNODES : 8;
+		return all ? NNODES : 8;
 	}
 
 	/**
diff --git a/MeshLib/Elements/TemplateHex.tpp b/MeshLib/Elements/TemplateHex.tpp
index 6dd746232db8bd313f85795ac68d40043133d4f7..cd05fdebcb073c8f36e5b0305cc51bf844474fd6 100644
--- a/MeshLib/Elements/TemplateHex.tpp
+++ b/MeshLib/Elements/TemplateHex.tpp
@@ -18,8 +18,8 @@
 
 namespace MeshLib {
 
-template <unsigned ORDER, unsigned NNODES>
-const unsigned TemplateHex<ORDER,NNODES>::_face_nodes[6][4] =
+template <unsigned NNODES>
+const unsigned TemplateHex<NNODES>::_face_nodes[6][4] =
 {
 	{0, 3, 2, 1}, // Face 0
 	{0, 1, 5, 4}, // Face 1
@@ -29,8 +29,8 @@ const unsigned TemplateHex<ORDER,NNODES>::_face_nodes[6][4] =
 	{4, 5, 6, 7}  // Face 5
 };
 
-template <unsigned ORDER, unsigned NNODES>
-const unsigned TemplateHex<ORDER,NNODES>::_edge_nodes[12][2] =
+template <unsigned NNODES>
+const unsigned TemplateHex<NNODES>::_edge_nodes[12][2] =
 {
 	{0, 1}, // Edge 0
 	{1, 2}, // Edge 1
@@ -46,8 +46,8 @@ const unsigned TemplateHex<ORDER,NNODES>::_edge_nodes[12][2] =
 	{4, 7}  // Edge 11
 };
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateHex<ORDER,NNODES>::TemplateHex(Node* nodes[8], unsigned value)
+template <unsigned NNODES>
+TemplateHex<NNODES>::TemplateHex(Node* nodes[8], unsigned value)
 	: Cell(value)
 {
 	_nodes = nodes;
@@ -59,8 +59,8 @@ TemplateHex<ORDER,NNODES>::TemplateHex(Node* nodes[8], unsigned value)
 	this->_volume = this->computeVolume();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateHex<ORDER,NNODES>::TemplateHex(const TemplateHex<ORDER,NNODES> &hex)
+template <unsigned NNODES>
+TemplateHex<NNODES>::TemplateHex(const TemplateHex<NNODES> &hex)
 	: Cell(hex.getValue())
 {
 	_nodes = new Node*[NNODES];
@@ -74,13 +74,13 @@ TemplateHex<ORDER,NNODES>::TemplateHex(const TemplateHex<ORDER,NNODES> &hex)
 	_volume = hex.getVolume();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateHex<ORDER,NNODES>::~TemplateHex()
+template <unsigned NNODES>
+TemplateHex<NNODES>::~TemplateHex()
 {
 }
 
-template <unsigned ORDER, unsigned NNODES>
-double TemplateHex<ORDER,NNODES>::computeVolume()
+template <unsigned NNODES>
+double TemplateHex<NNODES>::computeVolume()
 {
 	return MathLib::calcTetrahedronVolume(_nodes[4]->getCoords(), _nodes[7]->getCoords(), _nodes[5]->getCoords(), _nodes[0]->getCoords())
 		 + MathLib::calcTetrahedronVolume(_nodes[5]->getCoords(), _nodes[3]->getCoords(), _nodes[1]->getCoords(), _nodes[0]->getCoords())
@@ -90,8 +90,8 @@ double TemplateHex<ORDER,NNODES>::computeVolume()
 		 + MathLib::calcTetrahedronVolume(_nodes[3]->getCoords(), _nodes[7]->getCoords(), _nodes[5]->getCoords(), _nodes[2]->getCoords());
 }
 
-template <unsigned ORDER, unsigned NNODES>
-const Element* TemplateHex<ORDER,NNODES>::getFace(unsigned i) const
+template <unsigned NNODES>
+const Element* TemplateHex<NNODES>::getFace(unsigned i) const
 {
 	if (i<this->getNFaces())
 	{
@@ -105,8 +105,8 @@ const Element* TemplateHex<ORDER,NNODES>::getFace(unsigned i) const
 	return NULL;
 }
 
-template <unsigned ORDER, unsigned NNODES>
-bool TemplateHex<ORDER,NNODES>::isEdge(unsigned idx1, unsigned idx2) const
+template <unsigned NNODES>
+bool TemplateHex<NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 {
 	for (unsigned i(0); i<12; i++)
 	{
@@ -116,14 +116,14 @@ bool TemplateHex<ORDER,NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 	return false;
 }
 
-template <unsigned ORDER, unsigned NNODES>
-Element* TemplateHex<ORDER,NNODES>::clone() const
+template <unsigned NNODES>
+Element* TemplateHex<NNODES>::clone() const
 {
-	return new TemplateHex<ORDER,NNODES>(*this);
+	return new TemplateHex<NNODES>(*this);
 }
 
-template <unsigned ORDER, unsigned NNODES>
-unsigned TemplateHex<ORDER,NNODES>::identifyFace(Node* nodes[3]) const
+template <unsigned NNODES>
+unsigned TemplateHex<NNODES>::identifyFace(Node* nodes[3]) const
 {
 	for (unsigned i=0; i<6; i++)
 	{
@@ -138,8 +138,8 @@ unsigned TemplateHex<ORDER,NNODES>::identifyFace(Node* nodes[3]) const
 	return std::numeric_limits<unsigned>::max();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-Element* TemplateHex<ORDER,NNODES>::reviseElement() const
+template <unsigned NNODES>
+Element* TemplateHex<NNODES>::reviseElement() const
 {
 	std::vector<size_t> collapsed_edges;
 	for (size_t edge(0); edge<getNEdges(); edge++) {
@@ -149,7 +149,7 @@ Element* TemplateHex<ORDER,NNODES>::reviseElement() const
 	}
 
 	if (collapsed_edges.size() == 1) {
-		std::cerr << "[TemplateHex<ORDER,NNODES>::reviseElement()] collapsing of one edge in hexahedron not handled" << std::endl;
+		std::cerr << "[TemplateHex<NNODES>::reviseElement()] collapsing of one edge in hexahedron not handled" << std::endl;
 		return NULL;
 	}
 
diff --git a/MeshLib/Elements/TemplatePrism.h b/MeshLib/Elements/TemplatePrism.h
index 694927da41bf5db6e7087bc612ddd793695e03a6..2a93ae4db41ea9f0b9393b05e936f942103c06b6 100644
--- a/MeshLib/Elements/TemplatePrism.h
+++ b/MeshLib/Elements/TemplatePrism.h
@@ -40,7 +40,7 @@ namespace MeshLib {
  *
  * @endcode
  */
-template <unsigned ORDER, unsigned NNODES>
+template <unsigned NNODES>
 class TemplatePrism : public Cell
 {
 public:
@@ -48,7 +48,7 @@ public:
 	TemplatePrism(Node* nodes[6], unsigned value = 0);
 
 	/// Copy constructor
-	TemplatePrism(const TemplatePrism<ORDER,NNODES> &prism);
+	TemplatePrism(const TemplatePrism<NNODES> &prism);
 
 	/// Destructor
 	virtual ~TemplatePrism();
@@ -69,9 +69,9 @@ public:
 	unsigned getNNeighbors() const { return 5; };
 
 	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(unsigned order) const
+	virtual unsigned getNNodes(bool all = false) const
 	{
-		return order == ORDER ? NNODES : 6;
+		return all ? NNODES : 6;
 	}
 
 	/**
diff --git a/MeshLib/Elements/TemplatePrism.tpp b/MeshLib/Elements/TemplatePrism.tpp
index 468fb8c6498a5afbe3f541106448d458d5cfc2cd..cf1534cb586cc46dc36c39531d66a9c59ece3691 100644
--- a/MeshLib/Elements/TemplatePrism.tpp
+++ b/MeshLib/Elements/TemplatePrism.tpp
@@ -19,8 +19,8 @@
 
 namespace MeshLib {
 
-template <unsigned ORDER,unsigned NNODES>
-const unsigned TemplatePrism<ORDER,NNODES>::_face_nodes[5][4] =
+template <unsigned NNODES>
+const unsigned TemplatePrism<NNODES>::_face_nodes[5][4] =
 {
 	{0, 2, 1, 99}, // Face 0
 	{0, 1, 4,  3}, // Face 1
@@ -29,8 +29,8 @@ const unsigned TemplatePrism<ORDER,NNODES>::_face_nodes[5][4] =
 	{3, 4, 5, 99}  // Face 4
 };
 
-template <unsigned ORDER,unsigned NNODES>
-const unsigned TemplatePrism<ORDER,NNODES>::_edge_nodes[9][2] =
+template <unsigned NNODES>
+const unsigned TemplatePrism<NNODES>::_edge_nodes[9][2] =
 {
 	{0, 1}, // Edge 0
 	{1, 2}, // Edge 1
@@ -43,11 +43,11 @@ const unsigned TemplatePrism<ORDER,NNODES>::_edge_nodes[9][2] =
 	{3, 5}  // Edge 8
 };
 
-template <unsigned ORDER,unsigned NNODES>
-const unsigned TemplatePrism<ORDER,NNODES>::_n_face_nodes[5] = { 3, 4, 4, 4, 3 };
+template <unsigned NNODES>
+const unsigned TemplatePrism<NNODES>::_n_face_nodes[5] = { 3, 4, 4, 4, 3 };
 
-template <unsigned ORDER,unsigned NNODES>
-TemplatePrism<ORDER,NNODES>::TemplatePrism(Node* nodes[6], unsigned value)
+template <unsigned NNODES>
+TemplatePrism<NNODES>::TemplatePrism(Node* nodes[6], unsigned value)
 	: Cell(value)
 {
 	_nodes = nodes;
@@ -57,8 +57,8 @@ TemplatePrism<ORDER,NNODES>::TemplatePrism(Node* nodes[6], unsigned value)
 	this->_volume = this->computeVolume();
 }
 
-template <unsigned ORDER,unsigned NNODES>
-TemplatePrism<ORDER,NNODES>::TemplatePrism(const TemplatePrism<ORDER,NNODES> &prism)
+template <unsigned NNODES>
+TemplatePrism<NNODES>::TemplatePrism(const TemplatePrism<NNODES> &prism)
 	: Cell(prism.getValue())
 {
 	_nodes = new Node*[NNODES];
@@ -72,21 +72,21 @@ TemplatePrism<ORDER,NNODES>::TemplatePrism(const TemplatePrism<ORDER,NNODES> &pr
 	_volume = prism.getVolume();
 }
 
-template <unsigned ORDER,unsigned NNODES>
-TemplatePrism<ORDER,NNODES>::~TemplatePrism()
+template <unsigned NNODES>
+TemplatePrism<NNODES>::~TemplatePrism()
 {
 }
 
-template <unsigned ORDER,unsigned NNODES>
-double TemplatePrism<ORDER,NNODES>::computeVolume()
+template <unsigned NNODES>
+double TemplatePrism<NNODES>::computeVolume()
 {
 	return MathLib::calcTetrahedronVolume(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords(), _nodes[3]->getCoords())
 		 + MathLib::calcTetrahedronVolume(_nodes[1]->getCoords(), _nodes[4]->getCoords(), _nodes[2]->getCoords(), _nodes[3]->getCoords())
 		 + MathLib::calcTetrahedronVolume(_nodes[2]->getCoords(), _nodes[4]->getCoords(), _nodes[5]->getCoords(), _nodes[3]->getCoords());
 }
 
-template <unsigned ORDER,unsigned NNODES>
-const Element* TemplatePrism<ORDER,NNODES>::getFace(unsigned i) const
+template <unsigned NNODES>
+const Element* TemplatePrism<NNODES>::getFace(unsigned i) const
 {
 	if (i<this->getNFaces())
 	{
@@ -104,8 +104,8 @@ const Element* TemplatePrism<ORDER,NNODES>::getFace(unsigned i) const
 	return NULL;
 }
 
-template <unsigned ORDER,unsigned NNODES>
-unsigned TemplatePrism<ORDER,NNODES>::getNFaceNodes(unsigned i) const
+template <unsigned NNODES>
+unsigned TemplatePrism<NNODES>::getNFaceNodes(unsigned i) const
 {
 	if (i<5)
 		return _n_face_nodes[i];
@@ -113,8 +113,8 @@ unsigned TemplatePrism<ORDER,NNODES>::getNFaceNodes(unsigned i) const
 	return 0;
 }
 
-template <unsigned ORDER,unsigned NNODES>
-bool TemplatePrism<ORDER,NNODES>::isEdge(unsigned idx1, unsigned idx2) const
+template <unsigned NNODES>
+bool TemplatePrism<NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 {
 	for (unsigned i(0); i<9; i++)
 	{
@@ -124,14 +124,14 @@ bool TemplatePrism<ORDER,NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 	return false;
 }
 
-template <unsigned ORDER,unsigned NNODES>
-Element* TemplatePrism<ORDER,NNODES>::clone() const
+template <unsigned NNODES>
+Element* TemplatePrism<NNODES>::clone() const
 {
-	return new TemplatePrism<ORDER,NNODES>(*this);
+	return new TemplatePrism<NNODES>(*this);
 }
 
-template <unsigned ORDER,unsigned NNODES>
-unsigned TemplatePrism<ORDER,NNODES>::identifyFace(Node* nodes[3]) const
+template <unsigned NNODES>
+unsigned TemplatePrism<NNODES>::identifyFace(Node* nodes[3]) const
 {
 	for (unsigned i=0; i<5; i++)
 	{
@@ -146,8 +146,8 @@ unsigned TemplatePrism<ORDER,NNODES>::identifyFace(Node* nodes[3]) const
 	return std::numeric_limits<unsigned>::max();
 }
 
-template <unsigned ORDER,unsigned NNODES>
-Element* TemplatePrism<ORDER,NNODES>::reviseElement() const
+template <unsigned NNODES>
+Element* TemplatePrism<NNODES>::reviseElement() const
 {
 	// try to create Pyramid
 	if (_nodes[_edge_nodes[3][0]] == _nodes[_edge_nodes[3][1]]) {
diff --git a/MeshLib/Elements/TemplatePyramid.h b/MeshLib/Elements/TemplatePyramid.h
index 7b321890e69323743212e8359892651b52395a5a..225ec57004d949c076529ff28ec721cff984fa39 100644
--- a/MeshLib/Elements/TemplatePyramid.h
+++ b/MeshLib/Elements/TemplatePyramid.h
@@ -38,7 +38,7 @@ namespace MeshLib {
  *        0
  * @endcode
  */
-template <unsigned ORDER, unsigned NNODES>
+template <unsigned NNODES>
 class TemplatePyramid : public Cell
 {
 public:
@@ -46,7 +46,7 @@ public:
 	TemplatePyramid(Node* nodes[NNODES], unsigned value = 0);
 
 	/// Copy constructor
-	TemplatePyramid(const TemplatePyramid<ORDER,NNODES> &pyramid);
+	TemplatePyramid(const TemplatePyramid<NNODES> &pyramid);
 
 	/// Destructor
 	virtual ~TemplatePyramid();
@@ -67,9 +67,9 @@ public:
 	unsigned getNNeighbors() const { return 5; };
 
 	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(unsigned order = 1) const
+	virtual unsigned getNNodes(bool all = false) const
 	{
-		return order == ORDER ? NNODES : 5;
+		return all ? NNODES : 5;
 	}
 
 	/**
diff --git a/MeshLib/Elements/TemplatePyramid.tpp b/MeshLib/Elements/TemplatePyramid.tpp
index e7a1c17eedddf6c3ebffd47656309746c60b7cab..1ddcb4c5b289be7fb2be76a8cb93c9e15130877c 100644
--- a/MeshLib/Elements/TemplatePyramid.tpp
+++ b/MeshLib/Elements/TemplatePyramid.tpp
@@ -19,8 +19,8 @@
 
 namespace MeshLib {
 
-template <unsigned ORDER, unsigned NNODES>
-const unsigned TemplatePyramid<ORDER,NNODES>::_face_nodes[5][4] =
+template <unsigned NNODES>
+const unsigned TemplatePyramid<NNODES>::_face_nodes[5][4] =
 {
 	{0, 1, 4, 99}, // Face 0
 	{1, 2, 4, 99}, // Face 1
@@ -29,8 +29,8 @@ const unsigned TemplatePyramid<ORDER,NNODES>::_face_nodes[5][4] =
 	{0, 3, 2,  1}  // Face 4
 };
 
-template <unsigned ORDER, unsigned NNODES>
-const unsigned TemplatePyramid<ORDER,NNODES>::_edge_nodes[8][2] =
+template <unsigned NNODES>
+const unsigned TemplatePyramid<NNODES>::_edge_nodes[8][2] =
 {
 	{0, 1}, // Edge 0
 	{1, 2}, // Edge 1
@@ -42,11 +42,11 @@ const unsigned TemplatePyramid<ORDER,NNODES>::_edge_nodes[8][2] =
 	{3, 4}  // Edge 7
 };
 
-template <unsigned ORDER, unsigned NNODES>
-const unsigned TemplatePyramid<ORDER,NNODES>::_n_face_nodes[5] = { 3, 3, 3, 3, 4 };
+template <unsigned NNODES>
+const unsigned TemplatePyramid<NNODES>::_n_face_nodes[5] = { 3, 3, 3, 3, 4 };
 
-template <unsigned ORDER, unsigned NNODES>
-TemplatePyramid<ORDER,NNODES>::TemplatePyramid(Node* nodes[NNODES], unsigned value)
+template <unsigned NNODES>
+TemplatePyramid<NNODES>::TemplatePyramid(Node* nodes[NNODES], unsigned value)
 	: Cell(value)
 {
 	_nodes = nodes;
@@ -58,8 +58,8 @@ TemplatePyramid<ORDER,NNODES>::TemplatePyramid(Node* nodes[NNODES], unsigned val
 	this->_volume = this->computeVolume();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplatePyramid<ORDER,NNODES>::TemplatePyramid(const TemplatePyramid<ORDER,NNODES> &pyramid)
+template <unsigned NNODES>
+TemplatePyramid<NNODES>::TemplatePyramid(const TemplatePyramid<NNODES> &pyramid)
 	: Cell(pyramid.getValue())
 {
 	_nodes = new Node*[NNODES];
@@ -75,20 +75,20 @@ TemplatePyramid<ORDER,NNODES>::TemplatePyramid(const TemplatePyramid<ORDER,NNODE
 	_volume = pyramid.getVolume();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplatePyramid<ORDER,NNODES>::~TemplatePyramid()
+template <unsigned NNODES>
+TemplatePyramid<NNODES>::~TemplatePyramid()
 {
 }
 
-template <unsigned ORDER, unsigned NNODES>
-double TemplatePyramid<ORDER,NNODES>::computeVolume()
+template <unsigned NNODES>
+double TemplatePyramid<NNODES>::computeVolume()
 {
 	return MathLib::calcTetrahedronVolume(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords(), _nodes[4]->getCoords())
 		 + MathLib::calcTetrahedronVolume(_nodes[2]->getCoords(), _nodes[3]->getCoords(), _nodes[0]->getCoords(), _nodes[4]->getCoords());
 }
 
-template <unsigned ORDER, unsigned NNODES>
-const Element* TemplatePyramid<ORDER,NNODES>::getFace(unsigned i) const
+template <unsigned NNODES>
+const Element* TemplatePyramid<NNODES>::getFace(unsigned i) const
 {
 	if (i<this->getNFaces())
 	{
@@ -106,8 +106,8 @@ const Element* TemplatePyramid<ORDER,NNODES>::getFace(unsigned i) const
 	return NULL;
 }
 
-template <unsigned ORDER, unsigned NNODES>
-unsigned TemplatePyramid<ORDER,NNODES>::getNFaceNodes(unsigned i) const
+template <unsigned NNODES>
+unsigned TemplatePyramid<NNODES>::getNFaceNodes(unsigned i) const
 {
 	if (i<5)
 		return _n_face_nodes[i];
@@ -115,8 +115,8 @@ unsigned TemplatePyramid<ORDER,NNODES>::getNFaceNodes(unsigned i) const
 	return 0;
 }
 
-template <unsigned ORDER, unsigned NNODES>
-bool TemplatePyramid<ORDER,NNODES>::isEdge(unsigned idx1, unsigned idx2) const
+template <unsigned NNODES>
+bool TemplatePyramid<NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 {
 	for (unsigned i(0); i<8; i++)
 	{
@@ -126,14 +126,14 @@ bool TemplatePyramid<ORDER,NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 	return false;
 }
 
-template <unsigned ORDER, unsigned NNODES>
-Element* TemplatePyramid<ORDER,NNODES>::clone() const
+template <unsigned NNODES>
+Element* TemplatePyramid<NNODES>::clone() const
 {
-	return new TemplatePyramid<ORDER,NNODES>(*this);
+	return new TemplatePyramid<NNODES>(*this);
 }
 
-template <unsigned ORDER, unsigned NNODES>
-unsigned TemplatePyramid<ORDER,NNODES>::identifyFace(Node* nodes[3]) const
+template <unsigned NNODES>
+unsigned TemplatePyramid<NNODES>::identifyFace(Node* nodes[3]) const
 {
 	for (unsigned i=0; i<5; i++)
 	{
@@ -148,8 +148,8 @@ unsigned TemplatePyramid<ORDER,NNODES>::identifyFace(Node* nodes[3]) const
 	return std::numeric_limits<unsigned>::max();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-Element* TemplatePyramid<ORDER,NNODES>::reviseElement() const
+template <unsigned NNODES>
+Element* TemplatePyramid<NNODES>::reviseElement() const
 {
 	// try to create tetrahedron
 	if (_nodes[_edge_nodes[0][0]] == _nodes[_edge_nodes[0][1]]
diff --git a/MeshLib/Elements/TemplateQuad.h b/MeshLib/Elements/TemplateQuad.h
index 609cd570c8c1b74d123a388564e1c7394913fadd..d05ac9239caaacd763d84e4d017fd40ca9c4cf8f 100644
--- a/MeshLib/Elements/TemplateQuad.h
+++ b/MeshLib/Elements/TemplateQuad.h
@@ -32,7 +32,7 @@ namespace MeshLib {
  *              0
  * @endcode
  */
-template <unsigned ORDER, unsigned NNODES>
+template <unsigned NNODES>
 class TemplateQuad : public Face
 {
 public:
@@ -52,9 +52,9 @@ public:
 	unsigned getNNeighbors() const { return 4; };
 
 	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(unsigned order = 1) const
+	virtual unsigned getNNodes(bool all = false) const
 	{
-		return order == ORDER ? NNODES : 4;
+		return all ? NNODES : 4;
 	}
 
 	/**
@@ -98,8 +98,8 @@ protected:
 
 }; /* class */
 
-template <unsigned ORDER, unsigned NNODES>
-const unsigned TemplateQuad<ORDER,NNODES>::_edge_nodes[4][2] =
+template <unsigned NNODES>
+const unsigned TemplateQuad<NNODES>::_edge_nodes[4][2] =
 {
 	{0, 1}, // Edge 0
 	{1, 2}, // Edge 1
diff --git a/MeshLib/Elements/TemplateQuad.tpp b/MeshLib/Elements/TemplateQuad.tpp
index a8fb836ffd8212614d8d2a95cc6a733b41bfc7dc..f9afea0632b6d44e846b58d862e696edc1454099 100644
--- a/MeshLib/Elements/TemplateQuad.tpp
+++ b/MeshLib/Elements/TemplateQuad.tpp
@@ -17,8 +17,8 @@
 
 namespace MeshLib {
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateQuad<ORDER,NNODES>::TemplateQuad(Node* nodes[NNODES], unsigned value)
+template <unsigned NNODES>
+TemplateQuad<NNODES>::TemplateQuad(Node* nodes[NNODES], unsigned value)
 	: Face(value)
 {
 	_nodes = nodes;
@@ -30,8 +30,8 @@ TemplateQuad<ORDER,NNODES>::TemplateQuad(Node* nodes[NNODES], unsigned value)
 	this->_area = this->computeVolume();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateQuad<ORDER,NNODES>::TemplateQuad(const TemplateQuad<ORDER,NNODES> &quad)
+template <unsigned NNODES>
+TemplateQuad<NNODES>::TemplateQuad(const TemplateQuad<NNODES> &quad)
 	: Face(quad.getValue())
 {
 	_nodes = new Node*[NNODES];
@@ -47,20 +47,20 @@ TemplateQuad<ORDER,NNODES>::TemplateQuad(const TemplateQuad<ORDER,NNODES> &quad)
 	_area = quad.getArea();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateQuad<ORDER,NNODES>::~TemplateQuad()
+template <unsigned NNODES>
+TemplateQuad<NNODES>::~TemplateQuad()
 {
 }
 
-template <unsigned ORDER, unsigned NNODES>
-double TemplateQuad<ORDER,NNODES>::computeVolume()
+template <unsigned NNODES>
+double TemplateQuad<NNODES>::computeVolume()
 {
 	return MathLib::calcTriangleArea(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords())
          + MathLib::calcTriangleArea(_nodes[2]->getCoords(), _nodes[3]->getCoords(), _nodes[0]->getCoords());
 }
 
-template <unsigned ORDER, unsigned NNODES>
-bool TemplateQuad<ORDER,NNODES>::isEdge(unsigned idx1, unsigned idx2) const
+template <unsigned NNODES>
+bool TemplateQuad<NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 {
 	for (unsigned i(0); i<4; i++)
 	{
@@ -70,14 +70,14 @@ bool TemplateQuad<ORDER,NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 	return false;
 }
 
-template <unsigned ORDER, unsigned NNODES>
-Element* TemplateQuad<ORDER,NNODES>::clone() const
+template <unsigned NNODES>
+Element* TemplateQuad<NNODES>::clone() const
 {
 	return new TemplateQuad(*this);
 }
 
-template <unsigned ORDER, unsigned NNODES>
-unsigned TemplateQuad<ORDER,NNODES>::identifyFace(Node* nodes[3]) const
+template <unsigned NNODES>
+unsigned TemplateQuad<NNODES>::identifyFace(Node* nodes[3]) const
 {
 	for (unsigned i=0; i<4; i++)
 	{
@@ -92,8 +92,8 @@ unsigned TemplateQuad<ORDER,NNODES>::identifyFace(Node* nodes[3]) const
 	return std::numeric_limits<unsigned>::max();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-Element* TemplateQuad<ORDER,NNODES>::reviseElement() const
+template <unsigned NNODES>
+Element* TemplateQuad<NNODES>::reviseElement() const
 {
 	if (_nodes[0] == _nodes[1] || _nodes[1] == _nodes[2]) {
 		MeshLib::Node** tri_nodes = new MeshLib::Node*[3];
diff --git a/MeshLib/Elements/TemplateTet.h b/MeshLib/Elements/TemplateTet.h
index 01c30608d170be73aa7f3786a4a4cf4c410ed1cb..39c1da63ca1e80d4422e63dbc18ad368ff02b034 100644
--- a/MeshLib/Elements/TemplateTet.h
+++ b/MeshLib/Elements/TemplateTet.h
@@ -37,7 +37,7 @@ namespace MeshLib {
  *
  * @endcode
  */
-template <unsigned ORDER, unsigned NNODES>
+template <unsigned NNODES>
 class TemplateTet : public Cell
 {
 public:
@@ -45,7 +45,7 @@ public:
 	TemplateTet(Node* nodes[NNODES], unsigned value = 0);
 
 	/// Copy constructor
-	TemplateTet(const TemplateTet<ORDER,NNODES> &tet);
+	TemplateTet(const TemplateTet<NNODES> &tet);
 
 	/// Destructor
 	virtual ~TemplateTet();
@@ -66,9 +66,9 @@ public:
 	unsigned getNNeighbors() const { return 4; };
 
 	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(unsigned order = 1) const
+	virtual unsigned getNNodes(bool all = false) const
 	{
-		return order == ORDER ? NNODES : 4;
+		return all ? NNODES : 4;
 	};
 
 	/**
diff --git a/MeshLib/Elements/TemplateTet.tpp b/MeshLib/Elements/TemplateTet.tpp
index fd549805ddce39b6138f0c49887dacc2681debc3..4e26e01b53e029a5d80ba2d780d4bada2dd2dfce 100644
--- a/MeshLib/Elements/TemplateTet.tpp
+++ b/MeshLib/Elements/TemplateTet.tpp
@@ -17,8 +17,8 @@
 
 namespace MeshLib {
 
-template <unsigned ORDER, unsigned NNODES>
-const unsigned TemplateTet<ORDER,NNODES>::_face_nodes[4][3] =
+template <unsigned NNODES>
+const unsigned TemplateTet<NNODES>::_face_nodes[4][3] =
 {
 	{0, 2, 1}, // Face 0
 	{0, 1, 3}, // Face 1
@@ -26,8 +26,8 @@ const unsigned TemplateTet<ORDER,NNODES>::_face_nodes[4][3] =
 	{2, 0, 3}  // Face 3
 };
 
-template <unsigned ORDER, unsigned NNODES>
-const unsigned TemplateTet<ORDER, NNODES>::_edge_nodes[6][2] =
+template <unsigned NNODES>
+const unsigned TemplateTet<NNODES>::_edge_nodes[6][2] =
 {
 	{0, 1}, // Edge 0
 	{1, 2}, // Edge 1
@@ -37,8 +37,8 @@ const unsigned TemplateTet<ORDER, NNODES>::_edge_nodes[6][2] =
 	{2, 3}  // Edge 5
 };
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateTet<ORDER, NNODES>::TemplateTet(Node* nodes[NNODES], unsigned value)
+template <unsigned NNODES>
+TemplateTet<NNODES>::TemplateTet(Node* nodes[NNODES], unsigned value)
 	: Cell(value)
 {
 	_nodes = nodes;
@@ -50,8 +50,8 @@ TemplateTet<ORDER, NNODES>::TemplateTet(Node* nodes[NNODES], unsigned value)
 	this->_volume = this->computeVolume();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateTet<ORDER, NNODES>::TemplateTet(const TemplateTet<ORDER, NNODES> &tet)
+template <unsigned NNODES>
+TemplateTet<NNODES>::TemplateTet(const TemplateTet<NNODES> &tet)
 	: Cell(tet.getValue())
 {
 	_nodes = new Node*[NNODES];
@@ -68,19 +68,19 @@ TemplateTet<ORDER, NNODES>::TemplateTet(const TemplateTet<ORDER, NNODES> &tet)
 	_volume = tet.getVolume();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateTet<ORDER, NNODES>::~TemplateTet()
+template <unsigned NNODES>
+TemplateTet<NNODES>::~TemplateTet()
 {
 }
 
-template <unsigned ORDER, unsigned NNODES>
-double TemplateTet<ORDER, NNODES>::computeVolume()
+template <unsigned NNODES>
+double TemplateTet<NNODES>::computeVolume()
 {
 	return MathLib::calcTetrahedronVolume(_nodes[0]->getCoords(), _nodes[1]->getCoords(), _nodes[2]->getCoords(), _nodes[3]->getCoords());
 }
 
-template <unsigned ORDER, unsigned NNODES>
-const Element* TemplateTet<ORDER, NNODES>::getFace(unsigned i) const
+template <unsigned NNODES>
+const Element* TemplateTet<NNODES>::getFace(unsigned i) const
 {
 	if (i<this->getNFaces())
 	{
@@ -94,8 +94,8 @@ const Element* TemplateTet<ORDER, NNODES>::getFace(unsigned i) const
 	return NULL;
 }
 
-template <unsigned ORDER, unsigned NNODES>
-bool TemplateTet<ORDER, NNODES>::isEdge(unsigned idx1, unsigned idx2) const
+template <unsigned NNODES>
+bool TemplateTet<NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 {
 	for (unsigned i(0); i<6; i++)
 	{
@@ -105,14 +105,14 @@ bool TemplateTet<ORDER, NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 	return false;
 }
 
-template <unsigned ORDER, unsigned NNODES>
-Element* TemplateTet<ORDER, NNODES>::clone() const
+template <unsigned NNODES>
+Element* TemplateTet<NNODES>::clone() const
 {
-	return new TemplateTet<ORDER,NNODES>(*this);
+	return new TemplateTet<NNODES>(*this);
 }
 
-template <unsigned ORDER, unsigned NNODES>
-unsigned TemplateTet<ORDER, NNODES>::identifyFace(Node* nodes[3]) const
+template <unsigned NNODES>
+unsigned TemplateTet<NNODES>::identifyFace(Node* nodes[3]) const
 {
 	for (unsigned i=0; i<4; i++)
 	{
@@ -127,8 +127,8 @@ unsigned TemplateTet<ORDER, NNODES>::identifyFace(Node* nodes[3]) const
 	return std::numeric_limits<unsigned>::max();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-Element* TemplateTet<ORDER, NNODES>::reviseElement() const
+template <unsigned NNODES>
+Element* TemplateTet<NNODES>::reviseElement() const
 {
 	if (_nodes[0] == _nodes[1] || _nodes[1] == _nodes[2]) {
 		MeshLib::Node** tri_nodes = new MeshLib::Node*[3];
diff --git a/MeshLib/Elements/TemplateTri.h b/MeshLib/Elements/TemplateTri.h
index 2d8be333dff42267d13060a70814d4ba0f8412b7..1bbdc31672dc010f1b978f134f4a22be17e7b0c0 100644
--- a/MeshLib/Elements/TemplateTri.h
+++ b/MeshLib/Elements/TemplateTri.h
@@ -39,7 +39,7 @@ namespace MeshLib {
  *
  * @endcode
  */
-template <unsigned ORDER, unsigned NNODES>
+template <unsigned NNODES>
 class TemplateTri : public Face
 {
 public:
@@ -47,7 +47,7 @@ public:
 	TemplateTri(Node* nodes[NNODES], unsigned value = 0);
 
 	/// Copy constructor
-	TemplateTri(const TemplateTri<ORDER, NNODES> &tri);
+	TemplateTri(const TemplateTri<NNODES> &tri);
 
 	/// Destructor
 	virtual ~TemplateTri();
@@ -59,9 +59,9 @@ public:
 	unsigned getNNeighbors() const { return 3; };
 
 	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(unsigned order = 1) const
+	virtual unsigned getNNodes(bool all = false) const
 	{
-		return order == ORDER ? NNODES : 3;
+		return all ? NNODES : 3;
 	}
 
 	/**
@@ -79,7 +79,7 @@ public:
 	 */
 	virtual Element* clone() const
 	{
-		return new TemplateTri<ORDER, NNODES>(*this);
+		return new TemplateTri<NNODES>(*this);
 	}
 
 
@@ -113,8 +113,8 @@ protected:
 	static const unsigned _edge_nodes[3][2];
 }; /* class */
 
-template <unsigned ORDER, unsigned NNODES>
-const unsigned TemplateTri<ORDER, NNODES>::_edge_nodes[3][2] = {
+template <unsigned NNODES>
+const unsigned TemplateTri<NNODES>::_edge_nodes[3][2] = {
 		{0, 1}, // Edge 0
 		{1, 2}, // Edge 1
 		{0, 2}  // Edge 2
diff --git a/MeshLib/Elements/TemplateTri.tpp b/MeshLib/Elements/TemplateTri.tpp
index 7994326053d50edccc581d7992f670b69fba74ef..0138e0bd9ef53ff2b0375e905567ef0a614a8e0d 100644
--- a/MeshLib/Elements/TemplateTri.tpp
+++ b/MeshLib/Elements/TemplateTri.tpp
@@ -11,8 +11,8 @@
 
 namespace MeshLib {
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateTri<ORDER,NNODES>::TemplateTri(Node* nodes[NNODES], unsigned value) :
+template <unsigned NNODES>
+TemplateTri<NNODES>::TemplateTri(Node* nodes[NNODES], unsigned value) :
 	Face(value)
 {
 	_nodes = nodes;
@@ -22,8 +22,8 @@ TemplateTri<ORDER,NNODES>::TemplateTri(Node* nodes[NNODES], unsigned value) :
 	this->_area = this->computeVolume();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateTri<ORDER,NNODES>::TemplateTri(const TemplateTri<ORDER, NNODES> &tri) :
+template <unsigned NNODES>
+TemplateTri<NNODES>::TemplateTri(const TemplateTri<NNODES> &tri) :
 	Face(tri.getValue())
 {
 	_nodes = new Node*[NNODES];
@@ -40,12 +40,12 @@ TemplateTri<ORDER,NNODES>::TemplateTri(const TemplateTri<ORDER, NNODES> &tri) :
 	_area = tri.getArea();
 }
 
-template <unsigned ORDER, unsigned NNODES>
-TemplateTri<ORDER,NNODES>::~TemplateTri()
+template <unsigned NNODES>
+TemplateTri<NNODES>::~TemplateTri()
 {}
 
-template <unsigned ORDER, unsigned NNODES>
-bool TemplateTri<ORDER,NNODES>::isEdge(unsigned idx1, unsigned idx2) const
+template <unsigned NNODES>
+bool TemplateTri<NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 {
 	for (unsigned i(0); i<3; i++)
 	{
@@ -55,8 +55,8 @@ bool TemplateTri<ORDER,NNODES>::isEdge(unsigned idx1, unsigned idx2) const
 	return false;
 }
 
-template <unsigned ORDER, unsigned NNODES>
-Element* TemplateTri<ORDER,NNODES>::reviseElement() const
+template <unsigned NNODES>
+Element* TemplateTri<NNODES>::reviseElement() const
 {
 	// try to create an edge
 	if (_nodes[0] == _nodes[1] || _nodes[1] == _nodes[2]) {
@@ -76,8 +76,8 @@ Element* TemplateTri<ORDER,NNODES>::reviseElement() const
 	return NULL;
 }
 
-template <unsigned ORDER, unsigned NNODES>
-unsigned TemplateTri<ORDER,NNODES>::identifyFace(Node* nodes[3]) const
+template <unsigned NNODES>
+unsigned TemplateTri<NNODES>::identifyFace(Node* nodes[3]) const
 {
 	for (unsigned i=0; i<3; i++)
 	{
diff --git a/MeshLib/Elements/Tet.h b/MeshLib/Elements/Tet.h
index 73e920023b211448f50222be89b657954d8baff4..1aaa64e70975eebb48ca6648221ff1b146669ab8 100644
--- a/MeshLib/Elements/Tet.h
+++ b/MeshLib/Elements/Tet.h
@@ -16,7 +16,7 @@
 
 namespace MeshLib {
 
-typedef TemplateTet<1,4> Tet;
+typedef TemplateTet<4> Tet;
 
 }
 
diff --git a/MeshLib/Elements/Tri.h b/MeshLib/Elements/Tri.h
index d0b4be2b047dd18d1d76f983030f563934b5eb07..1cdcbf0ea27b8718513f3e6058ff1156028017dd 100644
--- a/MeshLib/Elements/Tri.h
+++ b/MeshLib/Elements/Tri.h
@@ -16,7 +16,7 @@
 
 namespace MeshLib {
 
-typedef TemplateTri<1,3> Tri;
+typedef TemplateTri<3> Tri;
 
 }