diff --git a/MeshLib/Elements/Element.cpp b/MeshLib/Elements/Element.cpp
index 602e19a801f750f629477d82c61475f03540aa95..bb66f321d648a9e02052c47c51380e2328261fb6 100644
--- a/MeshLib/Elements/Element.cpp
+++ b/MeshLib/Elements/Element.cpp
@@ -23,11 +23,6 @@
 
 namespace MeshLib {
 
-Element::Element(unsigned value, std::size_t id)
-	: _nodes(nullptr), _id(id), _content(-1.0), _value(value), _neighbors(nullptr)
-{
-}
-
 Element::Element(std::size_t id)
 	: _nodes(nullptr), _id(id), _content(-1.0), _neighbors(nullptr)
 {
@@ -195,8 +190,8 @@ bool Element::isBoundaryElement() const
 #ifndef NDEBUG
 std::ostream& operator<<(std::ostream& os, Element const& e)
 {
-	os << "Element #" << e._id << " value " << e._value << " @ " << &e
-		<< " with " << e.getNNeighbors() << " neighbours\n";
+	os << "Element #" << e._id << " @ " << &e << " with " << e.getNNeighbors()
+	   << " neighbours\n";
 
 	unsigned const nnodes = e.getNNodes();
 	MeshLib::Node* const* const nodes = e.getNodes();
diff --git a/MeshLib/Elements/Element.h b/MeshLib/Elements/Element.h
index 94069fd7eaa674d9a244014ace49c5bc3eb138fd..66642ead389d66f42240560564163aa311da7148 100644
--- a/MeshLib/Elements/Element.h
+++ b/MeshLib/Elements/Element.h
@@ -89,7 +89,7 @@ public:
 	virtual const Element* getFace(unsigned i) const = 0;
 
 	/// Returns the ID of the element.
-	virtual std::size_t getID() const { return this->_id; }
+	std::size_t getID() const { return _id; }
 
 	/// Get the number of edges for this element.
 	virtual unsigned getNEdges() const = 0;
@@ -138,16 +138,6 @@ public:
 	 */
 	virtual CellType getCellType() const = 0;
 
-	/**
-	 * Get the value for this element. The value can be used to store a link
-	 * to external information (for instance an index of a field) like material groups.
-	 */
-	unsigned getValue() const { return _value; }
-
-	/**
-	 * Get the value for this element as a const reference.
-	 */
-	unsigned const& getValueReference() const { return _value; }
 
 	/**
 	 * Returns true if the element has zero length/area/volume.
@@ -173,12 +163,6 @@ public:
 	 */
 	virtual ElementErrorCode validate() const = 0;
 
-	/**
-	 * Set the index value for external information.
-	 * @param value an unsigned value for linking with external information
-	 */
-	void setValue(unsigned value) { _value = value; }
-
 	/// Returns true if elem is a neighbour of this element and false otherwise.
 	bool hasNeighbor(Element* elem) const;
 
@@ -214,26 +198,18 @@ public:
 #endif  // NDEBUG
 
 protected:
-	/// Constructor for a generic mesh element without an array of mesh nodes.
-	/// @param value  element value
-	/// @param id     element id
-	Element(unsigned value, std::size_t id);
-
 	/// Constructor for a generic mesh element without an array of mesh nodes.
 	/// @param id     element id
 	explicit Element(std::size_t id);
 
 	/// Sets the element ID.
-	virtual void setID(std::size_t id) { this->_id = id; }
+	void setID(std::size_t id) { _id = id; }
 
 	Node** _nodes;
 	std::size_t _id;
 	/// Content corresponds to length for 1D, area for 2D, and volume for 3D elements
 	double _content;
-	/**
-	 * this is an index for external additional information like materials
-	 */
-	unsigned _value;
+
 	Element** _neighbors;
 	/// Sets the neighbor over the face with \c face_id to the given \c
 	/// neighbor.
diff --git a/MeshLib/Elements/TemplateElement-impl.h b/MeshLib/Elements/TemplateElement-impl.h
index 6667db0c115f927db86beb301d235e293a676974..8221eff8aca55c1f858429dd9c332c7c4268cdbb 100644
--- a/MeshLib/Elements/TemplateElement-impl.h
+++ b/MeshLib/Elements/TemplateElement-impl.h
@@ -12,16 +12,6 @@
 namespace MeshLib
 {
 
-template <class ELEMENT_RULE>
-TemplateElement<ELEMENT_RULE>::TemplateElement(Node* nodes[n_all_nodes], unsigned value, std::size_t id)
-: Element(value, id)
-{
-	this->_nodes = nodes;
-	this->_neighbors = new Element*[getNNeighbors()];
-	std::fill(this->_neighbors, this->_neighbors + getNNeighbors(), nullptr);
-	this->_content = ELEMENT_RULE::computeVolume(this->_nodes);
-}
-
 template <class ELEMENT_RULE>
 TemplateElement<ELEMENT_RULE>::TemplateElement(Node* nodes[n_all_nodes], std::size_t id)
 : Element(id)
@@ -32,17 +22,6 @@ TemplateElement<ELEMENT_RULE>::TemplateElement(Node* nodes[n_all_nodes], std::si
 	this->_content = ELEMENT_RULE::computeVolume(this->_nodes);
 }
 
-template <class ELEMENT_RULE>
-TemplateElement<ELEMENT_RULE>::TemplateElement(std::array<Node*, n_all_nodes> const& nodes, unsigned value, std::size_t id)
-: Element(value, id)
-{
-	this->_nodes = new Node*[n_all_nodes];
-	std::copy(nodes.begin(), nodes.end(), this->_nodes);
-	this->_neighbors = new Element*[getNNeighbors()];
-	std::fill(this->_neighbors, this->_neighbors + getNNeighbors(), nullptr);
-	this->_content = ELEMENT_RULE::computeVolume(this->_nodes);
-}
-
 template <class ELEMENT_RULE>
 TemplateElement<ELEMENT_RULE>::TemplateElement(std::array<Node*, n_all_nodes> const& nodes, std::size_t id)
 : Element(id)
diff --git a/MeshLib/Elements/TemplateElement.h b/MeshLib/Elements/TemplateElement.h
index bb50401f5da49ac0716dbc06705bea48aaeadeac..fe98fa027fbc4d50cdca02a5077489501afa5866 100644
--- a/MeshLib/Elements/TemplateElement.h
+++ b/MeshLib/Elements/TemplateElement.h
@@ -41,15 +41,6 @@ public:
 	/// Constant: The dimension of this element
 	static const unsigned dimension = ELEMENT_RULE::dimension;
 
-	/**
-	 * Constructor with an array of mesh nodes.
-	 *
-	 * @param nodes  an array of pointers of mesh nodes which form this element
-	 * @param value  element value, e.g. material ID
-	 * @param id     element id
-	 */
-	TemplateElement(Node* nodes[n_all_nodes], unsigned value, std::size_t id);
-
 	/**
 	 * Constructor with an array of mesh nodes.
 	 *
@@ -58,15 +49,6 @@ public:
 	 */
 	TemplateElement(Node* nodes[n_all_nodes], std::size_t id = std::numeric_limits<std::size_t>::max());
 
-	/**
-	 * Constructor with an array of mesh nodes
-	 *
-	 * @param nodes  an array of pointers of mesh nodes which form this element
-	 * @param value  element value, e.g. material ID
-	 * @param id     element id
-	 */
-	TemplateElement(std::array<Node*, n_all_nodes> const& nodes, unsigned value, std::size_t id);
-
 	/**
 	 * Constructor with an array of mesh nodes
 	 *
diff --git a/Tests/InSituLib/TestVtkMappedMeshSource.cpp b/Tests/InSituLib/TestVtkMappedMeshSource.cpp
index 129d48afe93a0e4a93a9e71b7955c90ed33f10d1..86a6be26d0b581ec0d11ead2d6af7e00880869e6 100644
--- a/Tests/InSituLib/TestVtkMappedMeshSource.cpp
+++ b/Tests/InSituLib/TestVtkMappedMeshSource.cpp
@@ -97,9 +97,9 @@ class InSituMesh : public ::testing::Test
 		std::string const material_ids_name("MaterialIDs");
 		boost::optional<MeshLib::PropertyVector<int> &> material_id_properties(
 			mesh->getProperties().createNewPropertyVector<int>(material_ids_name,
-				MeshLib::MeshItemType::Node)
+				MeshLib::MeshItemType::Cell)
 		);
-		(*material_id_properties).resize(mesh->getNNodes());
+		(*material_id_properties).resize(mesh->getNElements());
 		std::iota((*material_id_properties).begin(), (*material_id_properties).end(), 1);
 	}