diff --git a/MeshLib/Elements/Element.cpp b/MeshLib/Elements/Element.cpp
index 87165e7a6c7d8384345191a43bebe89899579a79..a8572c56414295b49e0cd7917363f116ad5a3588 100644
--- a/MeshLib/Elements/Element.cpp
+++ b/MeshLib/Elements/Element.cpp
@@ -52,12 +52,13 @@ bool Element::addNeighbor(Element* e)
 		const unsigned eNodes (e->getNNodes());
 		const Node* const* e_nodes = e->getNodes();
 		unsigned count(0);
+		const unsigned dim (this->getDimension());
 		for (unsigned i(0); i<nNodes; i++)
 			for (unsigned j(0); j<eNodes; j++)
 				if (_nodes[i] == e_nodes[j])
 					//std::cout << _nodes[i]->getID() << " == " << e_nodes[j]->getID() << std::endl;
 					// increment shared nodes counter and check if enough nodes are similar to be sure e is a neighbour of this
-					if ((++count)>=this->getDimension())
+					if ((++count)>=dim)
 					{
 						_neighbors[n]=e;
 						return true;
diff --git a/MeshLib/Mesh.cpp b/MeshLib/Mesh.cpp
index 03701131dd27d829639b5df39388d876854d286b..a8bdfd13f287e9b818d53cf02a1ae04cef9c8580 100644
--- a/MeshLib/Mesh.cpp
+++ b/MeshLib/Mesh.cpp
@@ -112,34 +112,24 @@ void Mesh::setNeighborInformationForElements()
 	{
 		// create vector with all elements connected to current element (includes lots of doubles!)
 		std::vector<Element*> neighbors;
-		const size_t nNodes (_elements[m]->getNNodes());
+		Element *const element (_elements[m]);
+		const size_t nNodes (element->getNNodes());
 		for (unsigned n(0); n<nNodes; n++)
 		{
-			const std::vector<Element*> conn_elems (_elements[m]->getNode(n)->getElements());
+			std::vector<Element*> const& conn_elems ((element->getNode(n)->getElements()));
 			neighbors.insert(neighbors.end(), conn_elems.begin(), conn_elems.end());
 		}
-		
+
 		const unsigned nNeighbors ( neighbors.size() );
-		/*std::vector<bool> done (nNeighbors, false);
-		// mark off the element itself
-		for (unsigned j(0); j<nNeighbors; j++)
-			if (neighbors[j] == _elements[m])
-				done[j] = true;
-				*/
+
 		// check if connected element is indeed a neighbour and mark all doubles of that element as 'done'
 		for (unsigned i(0); i<nNeighbors; i++)
-			//if (!done[i])
+		{
+			if (element->addNeighbor(neighbors[i]))
 			{
-				if (_elements[m]->addNeighbor(neighbors[i]))
-				{
-					neighbors[i]->addNeighbor(_elements[m]);
-				}/*
-					for (unsigned j(0); j<nNeighbors; j++)
-						if (!done[j] && (neighbors[j] == neighbors[i]))
-							done[j] = true;
-							*/
-					
+				neighbors[i]->addNeighbor(element);
 			}
+		}
 	}
 }
 
diff --git a/MeshLib/Node.h b/MeshLib/Node.h
index 0514b963d87ca20e0fc2fee2d2ef4d9512cf8d17..07362e911ba23fc7b3f19defe81b977ad32222c9 100644
--- a/MeshLib/Node.h
+++ b/MeshLib/Node.h
@@ -48,7 +48,7 @@ public:
 	const Element* getElement(unsigned idx) const { return _elements[idx]; };
 
 	/// Get all elements the node is part of.
-	const std::vector<Element*> getElements() const { return _elements; };
+	const std::vector<Element*>& getElements() const { return _elements; };
 
 	/// Get number of elements the node is part of.
 	size_t getNElements() const { return _elements.size(); };
diff --git a/SimpleTests/MeshTests/CollapseMeshNodes.cpp b/SimpleTests/MeshTests/CollapseMeshNodes.cpp
index add35350f6107dc262927a32c074434913c4cf1a..5fcbf1f9d9b672848898aaad9cd8c9716619f5ae 100644
--- a/SimpleTests/MeshTests/CollapseMeshNodes.cpp
+++ b/SimpleTests/MeshTests/CollapseMeshNodes.cpp
@@ -17,7 +17,6 @@
 // BaseLib/logog
 #include "logog.hpp"
 
-
 // MeshLib
 #include "Node.h"
 #include "Elements/Element.h"