diff --git a/MeshLib/ElementStatus.cpp b/MeshLib/ElementStatus.cpp
index 7e103977860e902950dac101abe5e6092e1ca0b9..57d243658131eac7dd026975c967408447708986 100644
--- a/MeshLib/ElementStatus.cpp
+++ b/MeshLib/ElementStatus.cpp
@@ -28,6 +28,29 @@ ElementStatus::ElementStatus(Mesh const*const mesh)
 		_active_nodes.push_back((*node)->getNElements());
 }
 
+
+std::vector<unsigned> ElementStatus::getActiveElements() const
+{
+	std::vector<unsigned> active_elements;
+	active_elements.reserve(this->getNActiveElements());
+	const std::size_t nElems (_mesh->getNElements());
+	for (std::size_t i=0; i<nElems; ++i)
+		if (_element_status[i])
+			active_elements.push_back(i);
+	return active_elements;
+}
+
+std::vector<unsigned> ElementStatus::getActiveNodes() const 
+{
+	std::vector<unsigned> active_nodes;
+	active_nodes.reserve(this->getNActiveNodes());
+	const std::size_t nNodes (_mesh->getNNodes());
+	for (std::size_t i=0; i<nNodes; ++i)
+		if (_active_nodes[i]>0)
+			active_nodes.push_back(i);
+	return active_nodes;
+}
+
 unsigned ElementStatus::getNActiveNodes() const 
 {
 	return _active_nodes.size() - std::count(_active_nodes.begin(), _active_nodes.end(), 0);
diff --git a/MeshLib/ElementStatus.h b/MeshLib/ElementStatus.h
index ecfb694331f82fcc64c23714124c8e30b9a1c0e1..5086ace18657f7d9c7bd76ae361ad530653f20c9 100644
--- a/MeshLib/ElementStatus.h
+++ b/MeshLib/ElementStatus.h
@@ -32,10 +32,10 @@ public:
 	ElementStatus(MeshLib::Mesh const*const mesh);
 
 	/// Returns a vector of active element IDs
-	std::vector<unsigned> getActiveElements() const {};
+	std::vector<unsigned> getActiveElements() const;
 
 	/// Returns a vector of active node IDs
-	std::vector<unsigned> getActiveNodes() const {};
+	std::vector<unsigned> getActiveNodes() const;
 	
 	/// Returns the status of element i
 	bool getElementStatus(unsigned i) const { return _element_status[i]; }