diff --git a/Applications/DataExplorer/DataView/ElementTreeModel.cpp b/Applications/DataExplorer/DataView/ElementTreeModel.cpp
index 95bfb4922ce78f3ab68e60eb8d915821ec45716d..19792c9b2ee2f90c662363ab399c7dc51935feb2 100644
--- a/Applications/DataExplorer/DataView/ElementTreeModel.cpp
+++ b/Applications/DataExplorer/DataView/ElementTreeModel.cpp
@@ -79,7 +79,7 @@ void ElementTreeModel::setElement(vtkUnstructuredGridAlgorithm const*const grid,
 	elemItem->appendChild(nodeListItem);
 
 	//const std::vector<MeshLib::Node*> nodes_vec = grid->getNodes();
-	size_t nElemNodes = elem->getNNodes();
+	size_t nElemNodes = elem->getNBaseNodes();
 	for (size_t i = 0; i < nElemNodes; i++)
 	{
 		const MeshLib::Node* node = elem->getNode(i);
diff --git a/Applications/DataExplorer/VtkVis/VtkMeshSource.cpp b/Applications/DataExplorer/VtkVis/VtkMeshSource.cpp
index beb8d3b6d82162205db9b6d85040d668505aa968..5f747a9a877eae97825d45035890595c59e5b4c3 100644
--- a/Applications/DataExplorer/VtkVis/VtkMeshSource.cpp
+++ b/Applications/DataExplorer/VtkVis/VtkMeshSource.cpp
@@ -88,7 +88,7 @@ void VtkMeshSource::PrintSelf( ostream& os, vtkIndent indent )
 	for (std::vector<MeshLib::Element*>::const_iterator it = elems.begin(); it != elems.end(); ++it)
 	{
 		os << indent << "Element " << i << ": ";
-		for (unsigned t = 0; t < (*it)->getNNodes(); ++t)
+		for (unsigned t = 0; t < (*it)->getNBaseNodes(); ++t)
 			os << (*it)->getNode(t)->getID() << " ";
 		os << "\n";
 	}
@@ -140,7 +140,7 @@ int VtkMeshSource::RequestData( vtkInformation* request,
 
 		materialIDs->InsertValue(i, elem->getValue());
 		vtkIdList* point_ids = vtkIdList::New();
-		const unsigned nElemNodes (elem->getNNodes());
+		const unsigned nElemNodes (elem->getNBaseNodes());
 		point_ids->SetNumberOfIds(nElemNodes);
 		for (unsigned j = 0; j < nElemNodes; ++j)
 			point_ids->SetId(j, elem->getNode(j)->getID());
diff --git a/Applications/Utils/MeshEdit/DataExplorer5NodeReordering.cpp b/Applications/Utils/MeshEdit/DataExplorer5NodeReordering.cpp
index cbae071c4565b12d4d3e482ddf4b7def42cd0226..0d135670ac279ecb6070393cb8100c01285e3eba 100644
--- a/Applications/Utils/MeshEdit/DataExplorer5NodeReordering.cpp
+++ b/Applications/Utils/MeshEdit/DataExplorer5NodeReordering.cpp
@@ -32,7 +32,7 @@ void reorderNodes(std::vector<MeshLib::Element*> &elements)
 	std::size_t nElements (elements.size());
 	for (std::size_t i=0; i<nElements; ++i) 
 	{
-		const unsigned nElemNodes (elements[i]->getNNodes());
+		const unsigned nElemNodes (elements[i]->getNBaseNodes());
 		std::vector<MeshLib::Node*> nodes(elements[i]->getNodes(), elements[i]->getNodes() + nElemNodes);
 
 		switch (elements[i]->getGeomType())
diff --git a/FileIO/FEFLOWInterface.cpp b/FileIO/FEFLOWInterface.cpp
index 2e9dd0cf6500aaca0320236b39ad5802438606a3..bbb90a1b788cd4656da3a0ca9cf6d7ac948c3b2b 100644
--- a/FileIO/FEFLOWInterface.cpp
+++ b/FileIO/FEFLOWInterface.cpp
@@ -483,7 +483,7 @@ void FEFLOWInterface::setMaterialID(const FEM_CLASS &fem_class, const FEM_DIM &f
 		for (auto* e : vec_elements)
 		{
 			unsigned e_min_nodeID = std::numeric_limits<unsigned>::max();
-			for (size_t i=0; i<e->getNNodes(); i++)
+			for (size_t i=0; i<e->getNBaseNodes(); i++)
 				e_min_nodeID = std::min(e_min_nodeID, e->getNodeIndex(i));
 			size_t layer_id = e_min_nodeID / no_nodes_per_layer;
 			e->setValue(layer_id);
diff --git a/FileIO/Legacy/MeshIO.cpp b/FileIO/Legacy/MeshIO.cpp
index 6d25d1ee27f4c9dd019df5f0be53144170c4b3c8..d7a5276d31e5fc7ba60d1a0483c3ffea6ed2e86c 100644
--- a/FileIO/Legacy/MeshIO.cpp
+++ b/FileIO/Legacy/MeshIO.cpp
@@ -269,7 +269,7 @@ void MeshIO::writeElements(std::vector<MeshLib::Element*> const& ele_vec,
 	out << ele_vector_size << "\n";
 	for (size_t i(0); i < ele_vector_size; ++i) {
 		out << i << " " << ele_vec[i]->getValue() << " " << this->ElemType2StringOutput(ele_vec[i]->getGeomType()) << " ";
-		unsigned nElemNodes (ele_vec[i]->getNNodes());
+		unsigned nElemNodes (ele_vec[i]->getNBaseNodes());
 		for(size_t j = 0; j < nElemNodes; ++j)
 			out << ele_vec[i]->getNode(j)->getID() << " ";
 		out << "\n";
diff --git a/FileIO/SHPInterface.cpp b/FileIO/SHPInterface.cpp
index 04e6e73abb4c4fa4a941e337c47a19b80610ec7f..198e3e8e202acea4d6a0247aa8ddf626ece3536d 100644
--- a/FileIO/SHPInterface.cpp
+++ b/FileIO/SHPInterface.cpp
@@ -242,7 +242,7 @@ bool SHPInterface::write2dMeshToSHP(const std::string &file_name, const MeshLib:
 			DBFWriteIntegerAttribute(hDBF, polygon_id, elem_id_field, i);
 			DBFWriteIntegerAttribute(hDBF, polygon_id, mat_field, e->getValue());
 
-			unsigned nNodes (e->getNNodes());
+			unsigned nNodes (e->getNBaseNodes());
 			padfX = new double[nNodes+1];
 			padfY = new double[nNodes+1];
 			padfZ = new double[nNodes+1];
diff --git a/FileIO/XmlIO/Boost/BoostVtuInterface.cpp b/FileIO/XmlIO/Boost/BoostVtuInterface.cpp
index 8fb074a154bf463fea3d9117b0d32ceb623d9566..0c52a9d5aa46b0e7e47b75a6b1e09aa8be5aa4f2 100644
--- a/FileIO/XmlIO/Boost/BoostVtuInterface.cpp
+++ b/FileIO/XmlIO/Boost/BoostVtuInterface.cpp
@@ -506,7 +506,7 @@ void BoostVtuInterface::buildPropertyTree()
 	for (unsigned i = 0; i < nElems; i++)
 	{
 		MeshLib::Element* element (elements[i]);
-		const unsigned nElemNodes (element->getNNodes());
+		const unsigned nElemNodes (element->getNBaseNodes());
 		oss << data_array_indent;
 		for (unsigned j = 0; j < nElemNodes; j++)
 			oss << element->getNode(j)->getID() << " ";
diff --git a/MeshGeoToolsLib/BoundaryElementsAlongPolyline.cpp b/MeshGeoToolsLib/BoundaryElementsAlongPolyline.cpp
index 0ff2347d6f9772c46573ef829fb33f5cd71d3692..133ccf6c2213831f95f698074ed5bd70bca23573 100644
--- a/MeshGeoToolsLib/BoundaryElementsAlongPolyline.cpp
+++ b/MeshGeoToolsLib/BoundaryElementsAlongPolyline.cpp
@@ -73,14 +73,14 @@ BoundaryElementsAlongPolyline::~BoundaryElementsAlongPolyline()
 bool BoundaryElementsAlongPolyline::includesAllEdgeNodeIDs(const std::vector<std::size_t> &vec_node_ids, const MeshLib::Element &edge, std::vector<std::size_t> &edge_node_distances) const
 {
 	unsigned j=0;
-	for (; j<edge.getNNodes(); j++) {
+	for (; j<edge.getNBaseNodes(); j++) {
 		auto itr = std::find(vec_node_ids.begin(), vec_node_ids.end(), edge.getNodeIndex(j));
 		if (itr != vec_node_ids.end())
 			edge_node_distances.push_back(std::distance(vec_node_ids.begin(), itr));
 		else
 			break;
 	}
-	return (j==edge.getNNodes());
+	return (j==edge.getNBaseNodes());
 }
 
 MeshLib::Element* BoundaryElementsAlongPolyline::modifyEdgeNodeOrdering(const MeshLib::Element &edge, const GeoLib::Polyline &ply, const std::vector<std::size_t> &edge_node_distances_along_ply, const std::vector<std::size_t> &node_ids_on_poly) const
@@ -90,8 +90,8 @@ MeshLib::Element* BoundaryElementsAlongPolyline::modifyEdgeNodeOrdering(const Me
 	// Otherwise, create a new element with reversed local node index
 	if (edge_node_distances_along_ply.front() > edge_node_distances_along_ply.back()
 			|| (ply.isClosed() && edge_node_distances_along_ply.back() == node_ids_on_poly.size()-1)) {
-		MeshLib::Node** new_nodes = new MeshLib::Node*[edge.getNNodes()];
-		std::reverse_copy(edge.getNodes(), edge.getNodes()+edge.getNNodes(), new_nodes);
+		MeshLib::Node** new_nodes = new MeshLib::Node*[edge.getNBaseNodes()];
+		std::reverse_copy(edge.getNodes(), edge.getNodes()+edge.getNBaseNodes(), new_nodes);
 		new_edge = new MeshLib::Line(new_nodes);
 	}
 	return new_edge;
diff --git a/MeshGeoToolsLib/BoundaryElementsOnSurface.cpp b/MeshGeoToolsLib/BoundaryElementsOnSurface.cpp
index e6ddc9241f50636def41845e9ce0868abc7b681a..14682b63b0b04df5d865731721d5bfca71121e21 100644
--- a/MeshGeoToolsLib/BoundaryElementsOnSurface.cpp
+++ b/MeshGeoToolsLib/BoundaryElementsOnSurface.cpp
@@ -37,14 +37,14 @@ BoundaryElementsOnSurface::BoundaryElementsOnSurface(MeshLib::Mesh const& mesh,
 			auto* face = e->getFace(i);
 			// check
 			size_t cnt_match = 0;
-			for (size_t j=0; j<face->getNNodes(); j++) {
+			for (size_t j=0; j<face->getNBaseNodes(); j++) {
 				if (std::find(node_ids_on_sfc.begin(), node_ids_on_sfc.end(), face->getNodeIndex(j)) != node_ids_on_sfc.end())
 					cnt_match++;
 				else
 					break;
 			}
 			// update the list
-			if (cnt_match==face->getNNodes())
+			if (cnt_match==face->getNBaseNodes())
 				_boundary_elements.push_back(const_cast<MeshLib::Element*>(face));
 			else
 				delete face;
diff --git a/MeshLib/ElementStatus.cpp b/MeshLib/ElementStatus.cpp
index ea57800622883464b8bcabeeb8e2bf453113e2d2..b21b7b90a84155641c5dca4ae2f1e14126eed19c 100644
--- a/MeshLib/ElementStatus.cpp
+++ b/MeshLib/ElementStatus.cpp
@@ -99,7 +99,7 @@ void ElementStatus::setElementStatus(std::size_t i, bool status)
 	{
 		const int change = (status) ? 1 : -1;
 		_element_status[i] = status;
-		const unsigned nElemNodes (_mesh->getElement(i)->getNNodes());
+		const unsigned nElemNodes (_mesh->getElement(i)->getNBaseNodes());
 		MeshLib::Node const*const*const nodes = _mesh->getElement(i)->getNodes();
 		for (unsigned i=0; i<nElemNodes; ++i)
 		{
diff --git a/MeshLib/Elements/Element.cpp b/MeshLib/Elements/Element.cpp
index e4e99e0268a7fb89c8fc52bf9552072eb770eb1f..3d766a4884d02fe6ffd47cb5aa9389035b6591bd 100644
--- a/MeshLib/Elements/Element.cpp
+++ b/MeshLib/Elements/Element.cpp
@@ -53,8 +53,8 @@ boost::optional<unsigned> Element::addNeighbor(Element* e)
 		return boost::optional<unsigned>();
 
 	Node* face_nodes[3];
-	const unsigned nNodes (this->getNNodes());
-	const unsigned eNodes (e->getNNodes());
+	const unsigned nNodes (this->getNBaseNodes());
+	const unsigned eNodes (e->getNBaseNodes());
 	const Node* const* e_nodes = e->getNodes();
 	unsigned count(0);
 	const unsigned dim (this->getDimension());
@@ -76,7 +76,7 @@ boost::optional<unsigned> Element::addNeighbor(Element* e)
 
 MeshLib::Node Element::getCenterOfGravity() const
 {
-	const unsigned nNodes (this->getNNodes());
+	const unsigned nNodes (this->getNBaseNodes());
 	MeshLib::Node center(0,0,0);
 	for (unsigned i=0; i<nNodes; ++i)
 	{
@@ -126,7 +126,7 @@ const Element* Element::getNeighbor(unsigned i) const
 
 unsigned Element::getNodeIDinElement(const MeshLib::Node* node) const
 {
-	const unsigned nNodes (this->getNNodes());
+	const unsigned nNodes (this->getNBaseNodes());
 	for (unsigned i(0); i<nNodes; i++)
 		if (node == _nodes[i])
 			return i;
@@ -135,7 +135,7 @@ unsigned Element::getNodeIDinElement(const MeshLib::Node* node) const
 
 const Node* Element::getNode(unsigned i) const
 {
-	if (i < getNNodes())
+	if (i < getNBaseNodes())
 		return _nodes[i];
 	ERR("Error in MeshLib::Element::getNode() - Index %d in %s", i, MeshElemType2String(getGeomType()).c_str());
 	return nullptr;
@@ -143,13 +143,13 @@ const Node* Element::getNode(unsigned i) const
 
 void Element::setNode(unsigned idx, Node* node)
 {
-	if (idx < getNNodes())
+	if (idx < getNBaseNodes())
 		_nodes[idx] = node;
 }
 
 unsigned Element::getNodeIndex(unsigned i) const
 {
-	if (i<getNNodes())
+	if (i<getNBaseNodes())
 		return _nodes[i]->getID();
 	ERR("Error in MeshLib::Element::getNodeIndex() - Index does not exist.");
 	return std::numeric_limits<unsigned>::max();
diff --git a/MeshLib/Elements/Element.h b/MeshLib/Elements/Element.h
index 23435d802d59eb384ef047829c3d04afb81c4357..9d2d6f08d2d411af610dc3b91d50f0acc379ab2b 100644
--- a/MeshLib/Elements/Element.h
+++ b/MeshLib/Elements/Element.h
@@ -60,7 +60,7 @@ public:
 	 * Get node with local index i where i should be at most the number
 	 * of nodes of the element
 	 * @param i local index of node, at most the number of nodes of the
-	 * element that you can obtain with Element::getNNodes()
+	 * element that you can obtain with Element::getNBaseNodes()
 	 * @return a pointer to the appropriate (and constant, i.e. not
 	 * modifiable by the user) instance of class Node or a NULL pointer
 	 * @sa Element::getNodeIndex()
@@ -105,16 +105,12 @@ public:
 	virtual unsigned getNNeighbors() const = 0;
 
 	/**
-	 * 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.
+	 * Returns the number of linear nodes.
 	 */
-	virtual unsigned getNNodes(bool all = false) const = 0;
+	virtual unsigned getNBaseNodes() const = 0;
+
+	/// Returns the number of all nodes including both linear and nonlinear nodes
+	virtual unsigned getNNodes() const = 0;
 
 	/// Returns the position of the given node in the node array of this element.
 	virtual unsigned getNodeIDinElement(const MeshLib::Node* node) const;
@@ -123,7 +119,7 @@ public:
 	 * Get the global index for the Node with local index i.
 	 * The index i should be at most the number of nodes of the element.
 	 * @param i local index of Node, at most the number of nodes of the
-	 * element that you can obtain with Element::getNNodes()
+	 * element that you can obtain with Element::getNBaseNodes()
 	 * @return the global index or std::numeric_limits<unsigned>::max()
 	 * @sa Element::getNode()
 	 */
diff --git a/MeshLib/Elements/TemplateHex.h b/MeshLib/Elements/TemplateHex.h
index 6566be8670dc02842d388f774e4647f1b9031523..99f83ea5709304afb2c3670f07d8fc87546b0b57 100644
--- a/MeshLib/Elements/TemplateHex.h
+++ b/MeshLib/Elements/TemplateHex.h
@@ -83,10 +83,16 @@ public:
 	/// Get the number of neighbors for this element.
 	unsigned getNNeighbors() const { return 6; };
 
-	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(bool all = false) const
+	/// Get the number of linear nodes for this element.
+	virtual unsigned getNBaseNodes() const
 	{
-		return all ? n_all_nodes : n_base_nodes;
+		return n_base_nodes;
+	}
+
+	/// Get the number of all nodes for this element.
+	virtual unsigned getNNodes() const
+	{
+		return n_all_nodes;
 	}
 
 	/**
diff --git a/MeshLib/Elements/TemplateLine.h b/MeshLib/Elements/TemplateLine.h
index 11f275e523f10137c86ab62f94bb3c3c94cce6cb..dda39005df81076f794128577b463afc4607ac3d 100644
--- a/MeshLib/Elements/TemplateLine.h
+++ b/MeshLib/Elements/TemplateLine.h
@@ -89,10 +89,16 @@ public:
 	/// Get the number of neighbors for this element.
 	unsigned getNNeighbors() const { return 2; }
 
-	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(bool all = false) const
+	/// Get the number of linear nodes for this element.
+	virtual unsigned getNBaseNodes() const
 	{
-		return all ? n_all_nodes : n_base_nodes;
+		return n_base_nodes;
+	}
+
+	/// Get the number of all nodes for this element.
+	virtual unsigned getNNodes() const
+	{
+		return n_all_nodes;
 	}
 
 	/**
diff --git a/MeshLib/Elements/TemplatePrism.h b/MeshLib/Elements/TemplatePrism.h
index 28147429f9cfd89626956b5e68fe7cc41df1679a..d6e78f7c619e82aa2b42ae36435fce9b4ad29e0c 100644
--- a/MeshLib/Elements/TemplatePrism.h
+++ b/MeshLib/Elements/TemplatePrism.h
@@ -81,10 +81,16 @@ public:
 	/// Get the number of neighbors for this element.
 	unsigned getNNeighbors() const { return 5; };
 
-	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(bool all = false) const
+	/// Get the number of linear nodes for this element.
+	virtual unsigned getNBaseNodes() const
 	{
-		return all ? n_all_nodes : n_base_nodes;
+		return n_base_nodes;
+	}
+
+	/// Get the number of all nodes for this element.
+	virtual unsigned getNNodes() const
+	{
+		return n_all_nodes;
 	}
 
 	/**
diff --git a/MeshLib/Elements/TemplatePyramid.h b/MeshLib/Elements/TemplatePyramid.h
index 648c0e7ea2fa2c8ee976c9c1f8f7f74a6ebc5409..2bd7d54092fd63542a48102dad238cfd23ed4bb0 100644
--- a/MeshLib/Elements/TemplatePyramid.h
+++ b/MeshLib/Elements/TemplatePyramid.h
@@ -79,10 +79,16 @@ public:
 	/// Get the number of neighbors for this element.
 	unsigned getNNeighbors() const { return 5; };
 
-	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(bool all = false) const
+	/// Get the number of linear nodes for this element.
+	virtual unsigned getNBaseNodes() const
 	{
-		return all ? n_all_nodes : n_base_nodes;
+		return n_base_nodes;
+	}
+
+	/// Get the number of all nodes for this element.
+	virtual unsigned getNNodes() const
+	{
+		return n_all_nodes;
 	}
 
 	/**
diff --git a/MeshLib/Elements/TemplateQuad.h b/MeshLib/Elements/TemplateQuad.h
index a80230bd430f029f0ddf93fac95b445ced78f211..736bf6f0f0e212aca910f8bc417430f4e9a3f915 100644
--- a/MeshLib/Elements/TemplateQuad.h
+++ b/MeshLib/Elements/TemplateQuad.h
@@ -68,10 +68,16 @@ public:
 	/// Get the number of neighbors for this element.
 	unsigned getNNeighbors() const { return 4; };
 
-	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(bool all = false) const
+	/// Get the number of linear nodes for this element.
+	virtual unsigned getNBaseNodes() const
 	{
-		return all ? n_all_nodes : n_base_nodes;
+		return n_base_nodes;
+	}
+
+	/// Get the number of all nodes for this element.
+	virtual unsigned getNNodes() const
+	{
+		return n_all_nodes;
 	}
 
 	/**
diff --git a/MeshLib/Elements/TemplateTet.h b/MeshLib/Elements/TemplateTet.h
index 29bffdde3dc3f6c77a91ecfe794eef05ca841800..f4398fd146d7b577995ac9f130924418db597721 100644
--- a/MeshLib/Elements/TemplateTet.h
+++ b/MeshLib/Elements/TemplateTet.h
@@ -78,10 +78,16 @@ public:
 	/// Get the number of neighbors for this element.
 	unsigned getNNeighbors() const { return 4; };
 
-	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(bool all = false) const
+	/// Get the number of linear nodes for this element.
+	virtual unsigned getNBaseNodes() const
 	{
-		return all ? n_all_nodes : n_base_nodes;
+		return n_base_nodes;
+	}
+
+	/// Get the number of all nodes for this element.
+	virtual unsigned getNNodes() const
+	{
+		return n_all_nodes;
 	}
 
 	/**
diff --git a/MeshLib/Elements/TemplateTri.h b/MeshLib/Elements/TemplateTri.h
index 4ef0afa29212ef1b3ac78e812c5f72972d48dbcb..0f07e99be158bfb3629404c13161df41aa98971d 100644
--- a/MeshLib/Elements/TemplateTri.h
+++ b/MeshLib/Elements/TemplateTri.h
@@ -74,10 +74,16 @@ public:
 	/// Get the number of neighbors for this element.
 	unsigned getNNeighbors() const { return 3; };
 
-	/// Get the number of nodes for this element.
-	virtual unsigned getNNodes(bool all = false) const
+	/// Get the number of linear nodes for this element.
+	virtual unsigned getNBaseNodes() const
 	{
-		return all ? n_all_nodes : n_base_nodes;
+		return n_base_nodes;
+	}
+
+	/// Get the number of all nodes for this element.
+	virtual unsigned getNNodes() const
+	{
+		return n_all_nodes;
 	}
 
 	/**
diff --git a/MeshLib/Mesh.cpp b/MeshLib/Mesh.cpp
index ac6cc90d1b67214dc97b0fde32a46cde497b0326..d9de8d2e8f5c502f34a2c150a941a9d10934e1bb 100644
--- a/MeshLib/Mesh.cpp
+++ b/MeshLib/Mesh.cpp
@@ -61,7 +61,7 @@ Mesh::Mesh(const Mesh &mesh)
 	const size_t nElements (elements.size());
 	for (unsigned i=0; i<nElements; ++i)
 	{
-		const size_t nElemNodes = elements[i]->getNNodes();
+		const size_t nElemNodes = elements[i]->getNBaseNodes();
 		_elements[i] = elements[i]->clone();
 		for (unsigned j=0; j<nElemNodes; ++j)
 			_elements[i]->_nodes[j] = _nodes[elements[i]->getNode(j)->getID()];
@@ -97,7 +97,7 @@ void Mesh::addElement(Element* elem)
 	_elements.push_back(elem);
 
 	// add element information to nodes
-	unsigned nNodes (elem->getNNodes());
+	unsigned nNodes (elem->getNBaseNodes());
 	for (unsigned i=0; i<nNodes; ++i)
 		elem->_nodes[i]->addElement(elem);
 }
@@ -128,7 +128,7 @@ void Mesh::setElementsConnectedToNodes()
 {
 	for (auto e = _elements.begin(); e != _elements.end(); ++e)
 	{
-		const unsigned nNodes ((*e)->getNNodes());
+		const unsigned nNodes ((*e)->getNBaseNodes());
 		for (unsigned j=0; j<nNodes; ++j)
 			(*e)->_nodes[j]->addElement(*e);
 	}
@@ -165,7 +165,7 @@ void Mesh::setElementNeighbors()
 		// create vector with all elements connected to current element (includes lots of doubles!)
 		Element *const element = *it;
 
-		const size_t nNodes (element->getNNodes());
+		const size_t nNodes (element->getNBaseNodes());
 		for (unsigned n(0); n<nNodes; ++n)
 		{
 			std::vector<Element*> const& conn_elems ((element->getNode(n)->getElements()));
@@ -198,7 +198,7 @@ void Mesh::setNodesConnectedByEdges()
 		for (unsigned j=0; j<nConnElems; ++j)
 		{
 			const unsigned idx (conn_elems[j]->getNodeIDinElement(node));
-			const unsigned nElemNodes (conn_elems[j]->getNNodes());
+			const unsigned nElemNodes (conn_elems[j]->getNBaseNodes());
 			for (unsigned k(0); k<nElemNodes; ++k)
 			{
 				bool is_in_vector (false);
@@ -226,7 +226,7 @@ void Mesh::setNodesConnectedByElements()
 		const size_t nConnElems (conn_elems.size());
 		for (unsigned j=0; j<nConnElems; ++j)
 		{
-			const unsigned nElemNodes (conn_elems[j]->getNNodes());
+			const unsigned nElemNodes (conn_elems[j]->getNBaseNodes());
 			for (unsigned k(0); k<nElemNodes; ++k)
 			{
 				bool is_in_vector (false);
diff --git a/MeshLib/MeshEditing/DuplicateMeshComponents.cpp b/MeshLib/MeshEditing/DuplicateMeshComponents.cpp
index ad0f3ba33380dc51d61b9790b2248015714cf4f6..adbccb65360165b61cffc8edfb6832704100cff0 100644
--- a/MeshLib/MeshEditing/DuplicateMeshComponents.cpp
+++ b/MeshLib/MeshEditing/DuplicateMeshComponents.cpp
@@ -71,8 +71,8 @@ MeshLib::Element* copyElement(MeshLib::Element const*const element, const std::v
 template <typename E>
 MeshLib::Element* copyElement(MeshLib::Element const*const element, const std::vector<MeshLib::Node*> &nodes)
 {
-	MeshLib::Node** new_nodes = new MeshLib::Node*[element->getNNodes()];
-	for (unsigned i=0; i<element->getNNodes(); ++i)
+	MeshLib::Node** new_nodes = new MeshLib::Node*[element->getNBaseNodes()];
+	for (unsigned i=0; i<element->getNBaseNodes(); ++i)
 		new_nodes[i] = nodes[element->getNode(i)->getID()];
 	return new E(new_nodes, element->getValue());
 }
diff --git a/MeshLib/MeshEditing/ElementExtraction.cpp b/MeshLib/MeshEditing/ElementExtraction.cpp
index 5b0d35dbf964346f318d300d8fc78d021280e795..a54db859d646ce8f56d53493e9dcbb59c2b8251e 100644
--- a/MeshLib/MeshEditing/ElementExtraction.cpp
+++ b/MeshLib/MeshEditing/ElementExtraction.cpp
@@ -118,7 +118,7 @@ std::size_t ElementExtraction::searchByBoundingBox(const MeshLib::Node &x1, cons
 	const std::size_t n_elems(ele_vec.size());
 	for (std::size_t i = 0; i<n_elems; i++)
 	{
-		std::size_t nElemNodes (ele_vec[i]->getNNodes());
+		std::size_t nElemNodes (ele_vec[i]->getNBaseNodes());
 		for (std::size_t j=0; j<nElemNodes; ++j)
 			if (!aabb.containsPoint(*ele_vec[i]->getNode(j)))
 			{
diff --git a/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp b/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp
index 41ac0f37ad53ecacec98e7314f2fe077609e6c80..9a6e81c077589b37629f3db4a5a057558cdbf9c4 100644
--- a/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp
+++ b/MeshLib/MeshEditing/Mesh2MeshPropertyInterpolation.cpp
@@ -77,7 +77,7 @@ void Mesh2MeshPropertyInterpolation::interpolatePropertiesForMesh(Mesh *dest_mes
 	const size_t n_dest_elements(dest_elements.size());
 	for (size_t k(0); k<n_dest_elements; k++) {
 		// compute axis aligned bounding box around the current element
-		const GeoLib::AABB<MeshLib::Node> elem_aabb(dest_elements[k]->getNodes(), dest_elements[k]->getNodes()+dest_elements[k]->getNNodes());
+		const GeoLib::AABB<MeshLib::Node> elem_aabb(dest_elements[k]->getNodes(), dest_elements[k]->getNodes()+dest_elements[k]->getNBaseNodes());
 
 		// request "interesting" nodes from grid
 		std::vector<std::vector<MeshLib::Node*> const*> nodes;
diff --git a/MeshLib/MeshEditing/MeshRevision.cpp b/MeshLib/MeshEditing/MeshRevision.cpp
index 76ccbc40a88b9f5234aac50ffce337f926904512..a369db75b1f5e07b5f9d65801cd75f739fbcc5d2 100644
--- a/MeshLib/MeshEditing/MeshRevision.cpp
+++ b/MeshLib/MeshEditing/MeshRevision.cpp
@@ -71,7 +71,7 @@ MeshLib::Mesh* MeshRevision::simplifyMesh(const std::string &new_mesh_name, doub
 	for (auto elem = elements.begin(); elem != elements.end(); ++elem)
 	{
 		unsigned n_unique_nodes(this->getNUniqueNodes(*elem));
-		if (n_unique_nodes == (*elem)->getNNodes() && (*elem)->getDimension() >= min_elem_dim)
+		if (n_unique_nodes == (*elem)->getNBaseNodes() && (*elem)->getDimension() >= min_elem_dim)
 		{
 			ElementErrorCode e((*elem)->validate());
 			if (e[ElementErrorFlag::NonCoplanar])
@@ -87,7 +87,7 @@ MeshLib::Mesh* MeshRevision::simplifyMesh(const std::string &new_mesh_name, doub
 			else
 				new_elements.push_back(MeshLib::copyElement(*elem, new_nodes));
 		}
-		else if (n_unique_nodes < (*elem)->getNNodes() && n_unique_nodes>1)
+		else if (n_unique_nodes < (*elem)->getNBaseNodes() && n_unique_nodes>1)
 			reduceElement(*elem, n_unique_nodes, new_nodes, new_elements, min_elem_dim);
 		else
 			ERR ("Something is wrong, more unique nodes than actual nodes");
@@ -204,7 +204,7 @@ std::vector<MeshLib::Node*> MeshRevision::constructNewNodesArray(const std::vect
 
 unsigned MeshRevision::getNUniqueNodes(MeshLib::Element const*const element) const
 {
-	unsigned nNodes(element->getNNodes());
+	unsigned nNodes(element->getNBaseNodes());
 	unsigned count(nNodes);
 
 	for (unsigned i = 0; i < nNodes - 1; ++i)
@@ -623,7 +623,7 @@ MeshLib::Element* MeshRevision::constructLine(MeshLib::Element const*const eleme
 	MeshLib::Node** line_nodes = new MeshLib::Node*[2];
 	line_nodes[0] = nodes[element->getNode(0)->getID()];
 	line_nodes[1] = nullptr;
-	for (unsigned i=1; i<element->getNNodes(); ++i)
+	for (unsigned i=1; i<element->getNBaseNodes(); ++i)
 	{
 		if (element->getNode(i)->getID() != element->getNode(0)->getID())
 		{
@@ -644,12 +644,12 @@ MeshLib::Element* MeshRevision::constructTri(MeshLib::Element const*const elemen
 	MeshLib::Node** tri_nodes = new MeshLib::Node*[3];
 	tri_nodes[0] = nodes[element->getNode(0)->getID()];
 	tri_nodes[2] = nullptr;
-	for (unsigned i = 1; i < element->getNNodes(); ++i)
+	for (unsigned i = 1; i < element->getNBaseNodes(); ++i)
 	{
 		if (element->getNode(i)->getID() != tri_nodes[0]->getID())
 		{
 			tri_nodes[1] = nodes[element->getNode(i)->getID()];
-			for (unsigned j = i + 1; j < element->getNNodes(); ++j)
+			for (unsigned j = i + 1; j < element->getNBaseNodes(); ++j)
 			{
 				if (element->getNode(j)->getID() != tri_nodes[1]->getID())
 				{
@@ -669,7 +669,7 @@ MeshLib::Element* MeshRevision::constructFourNodeElement(MeshLib::Element const*
 	MeshLib::Node** new_nodes = new MeshLib::Node*[4];
 	unsigned count(0);
 	new_nodes[count++] = nodes[element->getNode(0)->getID()];
-	for (unsigned i=1; i<element->getNNodes(); ++i)
+	for (unsigned i=1; i<element->getNBaseNodes(); ++i)
 	{
 		if (count>3)
 			break;
@@ -713,7 +713,7 @@ MeshLib::Element* MeshRevision::constructFourNodeElement(MeshLib::Element const*
 
 unsigned MeshRevision::findPyramidTopNode(const MeshLib::Element &element, const std::array<std::size_t,4> &base_node_ids) const
 {
-	const std::size_t nNodes (element.getNNodes());
+	const std::size_t nNodes (element.getNBaseNodes());
 	for (std::size_t i=0; i<nNodes; ++i)
 	{
 		bool top_node=true;
diff --git a/MeshLib/MeshGenerators/LayeredVolume.cpp b/MeshLib/MeshGenerators/LayeredVolume.cpp
index 7fff70c2d803fc5ec8b020cf03b8ff25f858f5ae..c8f33de2fe84f5738d7fb436de12e47ff7042899 100644
--- a/MeshLib/MeshGenerators/LayeredVolume.cpp
+++ b/MeshLib/MeshGenerators/LayeredVolume.cpp
@@ -106,7 +106,7 @@ void LayeredVolume::addLayerBoundaries(const MeshLib::Mesh &layer, std::size_t n
 	const std::vector<MeshLib::Element*> &layer_elements (layer.getElements());
 	for (MeshLib::Element* elem : layer_elements)
 	{
-		const std::size_t nElemNodes (elem->getNNodes());
+		const std::size_t nElemNodes (elem->getNBaseNodes());
 		for (unsigned i=0; i<nElemNodes; ++i)
 			if (elem->getNeighbor(i) == nullptr)
 				for (unsigned j=0; j<nLayerBoundaries; ++j)
@@ -143,7 +143,7 @@ void LayeredVolume::removeCongruentElements(std::size_t nLayers, std::size_t nEl
 			MeshLib::Element *low  (_elements[lower_offset+j]);
 
 			unsigned count(0);
-			const std::size_t nElemNodes (low->getNNodes());
+			const std::size_t nElemNodes (low->getNBaseNodes());
 			for (std::size_t k=0; k<nElemNodes; ++k)
 				if (high->getNodeIndex(k) == low->getNodeIndex(k))
 				{
diff --git a/MeshLib/MeshGenerators/MeshLayerMapper.cpp b/MeshLib/MeshGenerators/MeshLayerMapper.cpp
index 6ce15970ad2b1c1a9ce11e562d54d24e7fc2a6dd..b9cc47a4d60bc7ae83b456e562514c41b7bf99bf 100644
--- a/MeshLib/MeshGenerators/MeshLayerMapper.cpp
+++ b/MeshLib/MeshGenerators/MeshLayerMapper.cpp
@@ -88,7 +88,7 @@ MeshLib::Mesh* MeshLayerMapper::createStaticLayers(MeshLib::Mesh const& mesh, st
 			if (sfc_elem->getDimension() < 2) // ignore line-elements
 				continue;
 				
-			const unsigned nElemNodes(sfc_elem->getNNodes());
+			const unsigned nElemNodes(sfc_elem->getNBaseNodes());
 			MeshLib::Node** e_nodes = new MeshLib::Node*[2*nElemNodes];
 
 			for (unsigned j=0; j<nElemNodes; ++j)
diff --git a/MeshLib/MeshQuality/ElementQualityMetric.cpp b/MeshLib/MeshQuality/ElementQualityMetric.cpp
index e7ca69dfad47f7f14577993b350315c1566def99..5de1f9a98c165cc9fff3621dfcdefd5bc8bf85aa 100644
--- a/MeshLib/MeshQuality/ElementQualityMetric.cpp
+++ b/MeshLib/MeshQuality/ElementQualityMetric.cpp
@@ -42,7 +42,7 @@ void ElementQualityMetric::errorMsg (Element const& elem, size_t idx) const
 {
 	ERR ("Error in MeshQualityChecker::check() - Calculated value of element is below double precision minimum.");
 	ERR ("Points of %s-Element %d: ", MeshElemType2String(elem.getGeomType()).c_str(), idx);
-	for (size_t i(0); i < elem.getNNodes(); i++)
+	for (size_t i(0); i < elem.getNBaseNodes(); i++)
 	{
 		const double* coords = elem.getNode(i)->getCoords();
 		ERR ("\t Node %d: (%f, %f, %f)", i, coords[0], coords[1], coords[2]);
diff --git a/MeshLib/MeshQuality/RadiusEdgeRatioMetric.cpp b/MeshLib/MeshQuality/RadiusEdgeRatioMetric.cpp
index 60c44b34cfda081e07a3d936134ffa71bab4072d..f9fc2fcc19257ca04dfa64795f9b57dd5262e886 100644
--- a/MeshLib/MeshQuality/RadiusEdgeRatioMetric.cpp
+++ b/MeshLib/MeshQuality/RadiusEdgeRatioMetric.cpp
@@ -31,7 +31,7 @@ void RadiusEdgeRatioMetric::calculateQuality ()
     for (size_t k(0); k < nElements; k++)
     {
         Element const& elem (*elements[k]);
-        std::size_t const n_nodes (elem.getNNodes());
+        std::size_t const n_nodes (elem.getNBaseNodes());
         std::vector<GeoLib::Point*> pnts(n_nodes);
         std::copy_n(elem.getNodes(), n_nodes, pnts.begin());
         GeoLib::MinimalBoundingSphere const s(pnts);
diff --git a/MeshLib/MeshSearcher.cpp b/MeshLib/MeshSearcher.cpp
index 6ba37e373d1542aca081b7ec243360ef4b3975d9..7c8356f053a05f13320b48f11b38534953d4c09d 100644
--- a/MeshLib/MeshSearcher.cpp
+++ b/MeshLib/MeshSearcher.cpp
@@ -40,7 +40,7 @@ std::vector<std::size_t> getConnectedNodeIDs(const std::vector<MeshLib::Element*
 	std::for_each(elements.begin(), elements.end(),
 		[&](MeshLib::Element* e)
 		{
-			for (unsigned i=0; i<e->getNNodes(); i++)
+			for (unsigned i=0; i<e->getNBaseNodes(); i++)
 				connected_nodes.push_back(e->getNodeIndex(i));
 		});
 	std::sort(connected_nodes.begin(), connected_nodes.end());
diff --git a/MeshLib/MeshSurfaceExtraction.cpp b/MeshLib/MeshSurfaceExtraction.cpp
index 14b5ed0c241185947231ab8875e6dbcc789ea663..c30c42416649797298cb010c48537deb55a1ed86 100644
--- a/MeshLib/MeshSurfaceExtraction.cpp
+++ b/MeshLib/MeshSurfaceExtraction.cpp
@@ -90,7 +90,7 @@ MeshLib::Mesh* MeshSurfaceExtraction::getMeshSurface(const MeshLib::Mesh &mesh,
 	new_elements.reserve(sfc_elements.size());
 	for (auto elem = sfc_elements.cbegin(); elem != sfc_elements.cend(); ++elem)
 	{
-		unsigned const n_elem_nodes ((*elem)->getNNodes());
+		unsigned const n_elem_nodes ((*elem)->getNBaseNodes());
 		MeshLib::Node** new_nodes = new MeshLib::Node*[n_elem_nodes];
 		for (unsigned k(0); k<n_elem_nodes; k++)
 			new_nodes[k] = sfc_nodes[node_id_map[(*elem)->getNode(k)->getID()]];
@@ -180,7 +180,7 @@ void MeshSurfaceExtraction::get2DSurfaceNodes(std::vector<MeshLib::Node*> &sfc_n
 	for (std::size_t i=0; i<nNewElements; ++i)
 	{
 		const MeshLib::Element* elem (sfc_elements[i]);
-		for (unsigned j=0; j<elem->getNNodes(); ++j)
+		for (unsigned j=0; j<elem->getNBaseNodes(); ++j)
 		{
 			const MeshLib::Node* node (elem->getNode(j));
 			tmp_nodes[node->getID()] = node;
diff --git a/Tests/MeshLib/TestBoundaryElementSearch.cpp b/Tests/MeshLib/TestBoundaryElementSearch.cpp
index 6ace444697501d12f3ecc58541dd5d929c42d869..a91adc7ce2c8949299896f1ba53695c0474481f0 100644
--- a/Tests/MeshLib/TestBoundaryElementSearch.cpp
+++ b/Tests/MeshLib/TestBoundaryElementSearch.cpp
@@ -90,22 +90,22 @@ TEST_F(MeshLibBoundaryElementSearchInSimpleQuadMesh, PolylineSearch)
 	for (unsigned i=0; i<n_eles_per_dir; i++) {
 		// edge found on a bottom line
 		auto* edge0 = found_edges_ply0[i];
-		ASSERT_EQ(2u, edge0->getNNodes());
+		ASSERT_EQ(2u, edge0->getNBaseNodes());
 		ASSERT_EQ(i, edge0->getNodeIndex(0));
 		ASSERT_EQ(i+1, edge0->getNodeIndex(1));
 		// edge found on a right line
 		auto* edge1 = found_edges_ply0[i+n_eles_per_dir];
-		ASSERT_EQ(2u, edge1->getNNodes());
+		ASSERT_EQ(2u, edge1->getNBaseNodes());
 		ASSERT_EQ(n_nodes_per_dir*i+n_nodes_per_dir-1, edge1->getNodeIndex(0));
 		ASSERT_EQ(n_nodes_per_dir*(i+1)+n_nodes_per_dir-1, edge1->getNodeIndex(1));
 		// edge found on a top line
 		auto* edge2 = found_edges_ply0[i+n_eles_per_dir*2];
-		ASSERT_EQ(2u, edge2->getNNodes());
+		ASSERT_EQ(2u, edge2->getNBaseNodes());
 		ASSERT_EQ(n_nodes_per_dir*n_nodes_per_dir-1-i, edge2->getNodeIndex(0));
 		ASSERT_EQ(n_nodes_per_dir*n_nodes_per_dir-1-(i+1), edge2->getNodeIndex(1));
 		// edge found on a left line
 		auto* edge3 = found_edges_ply0[i+n_eles_per_dir*3];
-		ASSERT_EQ(2u, edge3->getNNodes());
+		ASSERT_EQ(2u, edge3->getNBaseNodes());
 		ASSERT_EQ(n_nodes_per_dir*(n_nodes_per_dir-1)-n_nodes_per_dir*i, edge3->getNodeIndex(0));
 		ASSERT_EQ(n_nodes_per_dir*(n_nodes_per_dir-1)-n_nodes_per_dir*(i+1), edge3->getNodeIndex(1));
 	}
diff --git a/Tests/MeshLib/TestElementConstants.cpp b/Tests/MeshLib/TestElementConstants.cpp
index d6f2ed55100ee07b8b9c45613da1dce382e6c912..e65562c4a6afbf54bcc67e2b08e271271b8440e2 100644
--- a/Tests/MeshLib/TestElementConstants.cpp
+++ b/Tests/MeshLib/TestElementConstants.cpp
@@ -26,8 +26,8 @@ TEST(MeshLib, Quad4ElementConstants)
 	Quad quad(nodes);
 
 	ASSERT_EQ(2u, quad.getDimension());
-	ASSERT_EQ(4u, quad.getNNodes(true));
-	ASSERT_EQ(4u, quad.getNNodes(false));
+	ASSERT_EQ(4u, quad.getNNodes());
+	ASSERT_EQ(4u, quad.getNBaseNodes());
 }
 
 TEST(MeshLib, Quad8ElementConstants)
@@ -50,8 +50,8 @@ TEST(MeshLib, Quad8ElementConstants)
 	Quad8 quad8(nodes);
 
 	ASSERT_EQ(2u, quad8.getDimension());
-	ASSERT_EQ(8u, quad8.getNNodes(true));
-	ASSERT_EQ(4u, quad8.getNNodes(false));
+	ASSERT_EQ(8u, quad8.getNNodes());
+	ASSERT_EQ(4u, quad8.getNBaseNodes());
 }
 
 TEST(MeshLib, Quad9ElementConstants)
@@ -75,7 +75,7 @@ TEST(MeshLib, Quad9ElementConstants)
 	Quad9 quad9(nodes);
 
 	ASSERT_EQ(2u, quad9.getDimension());
-	ASSERT_EQ(9u, quad9.getNNodes(true));
-	ASSERT_EQ(4u, quad9.getNNodes(false));
+	ASSERT_EQ(9u, quad9.getNNodes());
+	ASSERT_EQ(4u, quad9.getNBaseNodes());
 }
 
diff --git a/Tests/MeshLib/TestLineMesh.cpp b/Tests/MeshLib/TestLineMesh.cpp
index 5ca9e29d0a1f17100c8f6455ea95f86b71e1242d..183004ccbbe719e607c5a3c3e4790e868f92d620 100644
--- a/Tests/MeshLib/TestLineMesh.cpp
+++ b/Tests/MeshLib/TestLineMesh.cpp
@@ -83,7 +83,7 @@ TEST_F(MeshLibLineMesh, ElementToNodeConnectivity)
     for (std::size_t i = 0; i < elements.size(); ++i)
     {
         // An element consists of two nodes n and n+1
-        ASSERT_EQ(2u, elements[i]->getNNodes());
+        ASSERT_EQ(2u, elements[i]->getNBaseNodes());
         ASSERT_EQ(i, elements[i]->getNode(0)->getID());
         ASSERT_EQ(i+1, elements[i]->getNode(1)->getID());
     }
diff --git a/Tests/MeshLib/TestQuadMesh.cpp b/Tests/MeshLib/TestQuadMesh.cpp
index 20cfc94c82fca6d6946b6f3d18aa6a754e958397..89791312e1a790a67bc6515d7a2da1e3f9ad5654 100644
--- a/Tests/MeshLib/TestQuadMesh.cpp
+++ b/Tests/MeshLib/TestQuadMesh.cpp
@@ -253,7 +253,7 @@ TEST_F(MeshLibQuadMesh, ElementToNodeConnectivity)
         std::size_t const i,
         std::size_t const j)
         {
-            EXPECT_EQ(4u, e->getNNodes());
+            EXPECT_EQ(4u, e->getNBaseNodes());
             EXPECT_EQ(getNode(i,   j),   e->getNode(0));
             EXPECT_EQ(getNode(i,   j+1), e->getNode(1));
             EXPECT_EQ(getNode(i+1, j+1), e->getNode(2));
diff --git a/Tests/NumLib/TestCoordinatesMapping.cpp b/Tests/NumLib/TestCoordinatesMapping.cpp
index b206e347870f0572c516cfbaff80aa0f82279543..cc127c449f15034f031c97027f4661400262a954 100644
--- a/Tests/NumLib/TestCoordinatesMapping.cpp
+++ b/Tests/NumLib/TestCoordinatesMapping.cpp
@@ -77,7 +77,7 @@ public:
         vec_eles.push_back(clockwiseEle);
         vec_eles.push_back(zeroVolumeEle);
         for (auto e : vec_eles)
-            for (unsigned i=0; i<e->getNNodes(true); i++)
+            for (unsigned i=0; i<e->getNNodes(); i++)
                 vec_nodes.push_back(e->getNode(i));
     }
 
diff --git a/Tests/NumLib/TestFe.cpp b/Tests/NumLib/TestFe.cpp
index 23c387c1b3c712ddf94b248dd8077e10785904a8..aee03d1c5a499ec7d52b7f83bab9ffa501decf63 100644
--- a/Tests/NumLib/TestFe.cpp
+++ b/Tests/NumLib/TestFe.cpp
@@ -117,7 +117,7 @@ class NumLibFemIsoTest : public ::testing::Test, public T::T_FE
         // for destructor
         vec_eles.push_back(mesh_element);
         for (auto e : vec_eles)
-            for (unsigned i=0; i<e->getNNodes(true); i++)
+            for (unsigned i=0; i<e->getNNodes(); i++)
                 vec_nodes.push_back(e->getNode(i));
     }