diff --git a/.travis.yml b/.travis.yml
index 292d2cad5881e6e3d1031c3a4ebb958c71e0b2a0..6cfe033aed4aa10e83ddd09d53e73875f9d58908 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -44,4 +44,6 @@ script:
 notifications:
   email:
     - lars.bilke@ufz.de
-  campfire: ogs:43a83c669536b2fa948caf643650b6b46d50f809@531799
+  hipchat:
+    rooms:
+      secure: kmLyt50IGFuK96xbD+VzWRRzF6UU6SdVpsn1bolKQaTCCj1rz4H1np1iUML0jeGn86DAkkHPWmFXaS2JN0EoX8L74HavJSkUfIa49cegk0je986fxucaUV1fnhFIRh6EGkpqvqE+uXs/wKHkzrkYbpHaRvJgmxQSV9kR4yRuAmw=
diff --git a/MathLib/LinAlg/PETSc/PETScMatrix.h b/MathLib/LinAlg/PETSc/PETScMatrix.h
index 7c73621961e27fe152f09848216587223606ddc1..03c8daf55e1335a3403e46168c5b0bec176f5dc5 100644
--- a/MathLib/LinAlg/PETSc/PETScMatrix.h
+++ b/MathLib/LinAlg/PETSc/PETScMatrix.h
@@ -115,8 +115,11 @@ class PETScMatrix
 
         /*
            \brief Set the specified rows to zero except diagonal entries, i.e.
-                  \f$A(k, j) = 0, j!=k, j=1,2,\cdots, n\f$, where \f$k \in \mbox{row\_pos}\f$
-                  This fucntion must be called by all rank.
+                  \f$A(k, j) = \begin{cases}
+                    0.0, &j\not=k, j=1,2,\dots,k-1, k+1, \dots, n
+                    1.0, &j = k
+                  \end{cases}f$, where \f$k \in \mbox{row\_pos}\f$
+                  This function must be called by all ranks.
            \param row_pos The row indicies of the specified rows.
         */
         void setRowsColumnsZero(std::vector<PetscInt> const& row_pos);
diff --git a/Tests/FileIO/TestXmlGmlReader.cpp b/Tests/FileIO/TestXmlGmlReader.cpp
index 5f3ee0f91e37a6c69d98f7d6e5bc75d39727ada8..d998d41ee7d68003f2a041c5a43896a35cd3a65e 100644
--- a/Tests/FileIO/TestXmlGmlReader.cpp
+++ b/Tests/FileIO/TestXmlGmlReader.cpp
@@ -93,30 +93,30 @@ TEST(FileIO, XmlGmlWriterReaderTest)
 	const GeoLib::PolylineVec *line_vec = geo_objects.getPolylineVecObj(geo_name);
 	const std::vector<GeoLib::Polyline*> *readerLines = geo_objects.getPolylineVec(geo_name);
 	const std::vector<GeoLib::Surface*> *readerSfcs = geo_objects.getSurfaceVec(geo_name);
-	ASSERT_EQ(readerPoints->size(), 9);
-	ASSERT_EQ(readerLines->size(), 5);
-	ASSERT_EQ(readerSfcs->size(), 2);
+	ASSERT_EQ(9u, readerPoints->size());
+	ASSERT_EQ(5u, readerLines->size());
+	ASSERT_EQ(2u, readerSfcs->size());
 
 	GeoLib::Point* pnt = (*readerPoints)[7];
-	ASSERT_EQ((*pnt)[0],3);
-	ASSERT_EQ((*pnt)[1],2);
-	ASSERT_EQ((*pnt)[2],0);
+	ASSERT_EQ(3.0, (*pnt)[0]);
+	ASSERT_EQ(2.0, (*pnt)[1]);
+	ASSERT_EQ(0.0, (*pnt)[2]);
 
 	GeoLib::Polyline* line = (*readerLines)[4];
-	ASSERT_EQ(line->getNumberOfPoints(), 3);
-	ASSERT_EQ(line->getPointID(0), 6);
-	ASSERT_EQ(line->getPointID(1), 7);
-	ASSERT_EQ(line->getPointID(2), 8);
+	ASSERT_EQ(3u, line->getNumberOfPoints());
+	ASSERT_EQ(6u, line->getPointID(0));
+	ASSERT_EQ(7u, line->getPointID(1));
+	ASSERT_EQ(8u, line->getPointID(2));
 	std::string line_name("");
 	line_vec->getNameOfElementByID(4, line_name);
-	ASSERT_EQ(line_name, "right");
+	ASSERT_EQ("right", line_name);
 
 	GeoLib::Surface* sfc = (*readerSfcs)[1];
-	ASSERT_EQ(sfc->getNTriangles(), 2);
+	ASSERT_EQ(2u, sfc->getNTriangles());
 	const GeoLib::Triangle* tri = (*sfc)[1];
-	ASSERT_EQ((*tri)[0],3);
-	ASSERT_EQ((*tri)[1],8);
-	ASSERT_EQ((*tri)[2],5);
+	ASSERT_EQ(3u, (*tri)[0]);
+	ASSERT_EQ(8u, (*tri)[1]);
+	ASSERT_EQ(5u, (*tri)[2]);
 
 	boost::filesystem::remove(test_data_file);
 	test_data_file += ".md5";
diff --git a/Tests/GeoLib/TestGEOObjectsMerge.cpp b/Tests/GeoLib/TestGEOObjectsMerge.cpp
index 09c4234187faddf399596a898efed7db4988e124..2146e6848d2f35868f8c9bf822e30a1ca179755d 100644
--- a/Tests/GeoLib/TestGEOObjectsMerge.cpp
+++ b/Tests/GeoLib/TestGEOObjectsMerge.cpp
@@ -211,7 +211,7 @@ TEST(GeoLib, GEOObjectsMergePolylinesWithNames)
 
 	// *** tests
 	// check number of points
-	ASSERT_EQ(geo_objs.getPointVec(merged_geometries_name)->size(), 4);
+	ASSERT_EQ(4u, geo_objs.getPointVec(merged_geometries_name)->size());
 
 	GeoLib::PolylineVec const*const ply_vec_objs =
 		geo_objs.getPolylineVecObj(merged_geometries_name);
@@ -220,7 +220,7 @@ TEST(GeoLib, GEOObjectsMergePolylinesWithNames)
 
 	// check number of polylines
 	ASSERT_TRUE(polylines != nullptr);
-	ASSERT_EQ(polylines->size(), 3u);
+	ASSERT_EQ(3u, polylines->size());
 
 	// check names of polylines
 	ASSERT_TRUE(ply_vec_objs->getElementByName("Polyline0FromGeometry0") != nullptr);
diff --git a/Tests/MeshLib/TestElementStatus.cpp b/Tests/MeshLib/TestElementStatus.cpp
index 6b75ec19d1f54ecf860f9cda0cc5144103cdcccc..a1b2e786311127a9b986e63fa2400b2d0245b2a0 100644
--- a/Tests/MeshLib/TestElementStatus.cpp
+++ b/Tests/MeshLib/TestElementStatus.cpp
@@ -72,19 +72,19 @@ TEST(MeshLib, ElementStatus)
 	ASSERT_EQ(status.getElementStatus(1), true);
 
 	std::vector<std::size_t> active_elements_at_node (status.getActiveElementsAtNode(2));
-	ASSERT_EQ(1, active_elements_at_node.size());
+	ASSERT_EQ(1u, active_elements_at_node.size());
 	active_elements_at_node = status.getActiveElementsAtNode(22);
-	ASSERT_EQ(1, active_elements_at_node.size());
+	ASSERT_EQ(1u, active_elements_at_node.size());
 	active_elements_at_node = status.getActiveElementsAtNode(44);
-	ASSERT_EQ(2, active_elements_at_node.size());
+	ASSERT_EQ(2u, active_elements_at_node.size());
 	active_elements_at_node = status.getActiveElementsAtNode(102);
-	ASSERT_EQ(4, active_elements_at_node.size());
+	ASSERT_EQ(4u, active_elements_at_node.size());
 
 	status.setAll(true);
 	ASSERT_EQ(elements.size(), status.getNActiveElements());
 	ASSERT_EQ(mesh->getNNodes(), status.getNActiveNodes());
 
 	status.setAll(false);
-	ASSERT_EQ(0, status.getNActiveElements());
-	ASSERT_EQ(0, status.getNActiveNodes());
+	ASSERT_EQ(0u, status.getNActiveElements());
+	ASSERT_EQ(0u, status.getNActiveNodes());
 }
diff --git a/Tests/MeshLib/TestMeshRevision.cpp b/Tests/MeshLib/TestMeshRevision.cpp
index bd51551ef12c3388cc9ec299e41228bd3f675025..7eb2ffc3aa7c88aeeb43d1e2f875acbf96339fce 100644
--- a/Tests/MeshLib/TestMeshRevision.cpp
+++ b/Tests/MeshLib/TestMeshRevision.cpp
@@ -43,13 +43,13 @@ TEST(MeshEditing, Tri)
 
 	ASSERT_EQ(MeshElemType::LINE, result->getElement(0)->getGeomType());
 	ASSERT_EQ(1, result->getElement(0)->getContent());
-	ASSERT_EQ(2, result->getNNodes());
+	ASSERT_EQ(2u, result->getNNodes());
 	delete result;
 
 	result = rev.simplifyMesh("new_mesh", 0.0999);
 	ASSERT_EQ(MeshElemType::TRIANGLE, result->getElement(0)->getGeomType());
 	ASSERT_EQ(0.05, result->getElement(0)->getContent());
-	ASSERT_EQ(3, result->getNNodes());
+	ASSERT_EQ(3u, result->getNNodes());
 	delete result;
 }
 
@@ -69,7 +69,7 @@ TEST(MeshEditing, NonPlanarQuad)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(2, result->getNElements());
+	ASSERT_EQ(2u, result->getNElements());
 	ASSERT_EQ(MeshElemType::TRIANGLE, result->getElement(1)->getGeomType());
 
 	delete result;
@@ -94,7 +94,7 @@ TEST(MeshEditing, Quad2Line)
 	
 	ASSERT_EQ(MeshElemType::LINE, result->getElement(0)->getGeomType());
 	ASSERT_NEAR(1.414213562373095, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
-	ASSERT_EQ(2, result->getNNodes());
+	ASSERT_EQ(2u, result->getNNodes());
 
 	delete result;
 }
@@ -118,7 +118,7 @@ TEST(MeshEditing, Quad2Tri)
 
 	ASSERT_EQ(MeshElemType::TRIANGLE, result->getElement(0)->getGeomType());
 	ASSERT_NEAR(0.5049752469181039, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
-	ASSERT_EQ(3, result->getNNodes());
+	ASSERT_EQ(3u, result->getNNodes());
 
 	delete result;
 }
@@ -144,7 +144,7 @@ TEST(MeshEditing, NonPlanarHex)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(6, result->getNElements());
+	ASSERT_EQ(6u, result->getNElements());
 	ASSERT_EQ(MeshElemType::TETRAHEDRON, result->getElement(4)->getGeomType());
 	ASSERT_NEAR(0.25, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
 	ASSERT_NEAR(0.1666666666666667, result->getElement(5)->getContent(), std::numeric_limits<double>::epsilon());
@@ -203,7 +203,7 @@ TEST(MeshEditing, Hex2FourTets)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(4, result->getNElements());
+	ASSERT_EQ(4u, result->getNElements());
 	ASSERT_EQ(MeshElemType::TETRAHEDRON, result->getElement(1)->getGeomType());
 	ASSERT_NEAR(0.1666666666666667, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
 	ASSERT_NEAR(0.1666666666666667, result->getElement(1)->getContent(), std::numeric_limits<double>::epsilon());
@@ -234,7 +234,7 @@ TEST(MeshEditing, Hex2TwoTets)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(2, result->getNElements());
+	ASSERT_EQ(2u, result->getNElements());
 	ASSERT_EQ(MeshElemType::TETRAHEDRON, result->getElement(1)->getGeomType());
 	ASSERT_NEAR(0.1666666666666667, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
 	ASSERT_NEAR(0.1666666666666667, result->getElement(1)->getContent(), std::numeric_limits<double>::epsilon());
@@ -260,7 +260,7 @@ TEST(MeshEditing, NonPlanarPyramid)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(2, result->getNElements());
+	ASSERT_EQ(2u, result->getNElements());
 	ASSERT_EQ(MeshElemType::TETRAHEDRON, result->getElement(1)->getGeomType());
 	ASSERT_NEAR(0.25, result->getElement(0)->getContent(),  std::numeric_limits<double>::epsilon());
 	ASSERT_NEAR(0.1666666666666667, result->getElement(1)->getContent(), std::numeric_limits<double>::epsilon());
@@ -286,7 +286,7 @@ TEST(MeshEditing, Pyramid2Tet)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(1, result->getNElements());
+	ASSERT_EQ(1u, result->getNElements());
 	ASSERT_EQ(MeshElemType::TETRAHEDRON, result->getElement(0)->getGeomType());
 	ASSERT_NEAR(0.16666666666666666, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
 	
@@ -311,7 +311,7 @@ TEST(MeshEditing, Pyramid2Quad)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(1, result->getNElements());
+	ASSERT_EQ(1u, result->getNElements());
 	ASSERT_EQ(MeshElemType::QUAD, result->getElement(0)->getGeomType());
 	ASSERT_NEAR(1, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
 	
@@ -336,8 +336,8 @@ TEST(MeshEditing, Pyramid2Tri)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(3, result->getNNodes());
-	ASSERT_EQ(1, result->getNElements());
+	ASSERT_EQ(3u, result->getNNodes());
+	ASSERT_EQ(1u, result->getNElements());
 	ASSERT_EQ(MeshElemType::TRIANGLE, result->getElement(0)->getGeomType());
 	ASSERT_NEAR(0.5, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
 	
@@ -363,7 +363,7 @@ TEST(MeshEditing, NonPlanarPrism)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(3, result->getNElements());
+	ASSERT_EQ(3u, result->getNElements());
 	ASSERT_EQ(MeshElemType::TETRAHEDRON, result->getElement(2)->getGeomType());
 	ASSERT_NEAR(0.1666666666666667, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
 	
@@ -389,8 +389,8 @@ TEST(MeshEditing, Prism2TwoTets)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(5, result->getNNodes());
-	ASSERT_EQ(2, result->getNElements());
+	ASSERT_EQ(5u, result->getNNodes());
+	ASSERT_EQ(2u, result->getNElements());
 	ASSERT_EQ(MeshElemType::TETRAHEDRON, result->getElement(1)->getGeomType());
 	ASSERT_NEAR(0.1666666666666667, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
 	ASSERT_NEAR(0.15, result->getElement(1)->getContent(), std::numeric_limits<double>::epsilon());
@@ -417,10 +417,10 @@ TEST(MeshEditing, Prism2Quad)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(1, result->getNElements());
+	ASSERT_EQ(1u, result->getNElements());
 	ASSERT_EQ(MeshElemType::QUAD, result->getElement(0)->getGeomType());
-	ASSERT_NEAR(1.345362404707371, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());	
-	
+	ASSERT_NEAR(1.345362404707371, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
+
 	delete result;
 }
 
@@ -443,7 +443,7 @@ TEST(MeshEditing, Prism2Tet)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(1, result->getNElements());
+	ASSERT_EQ(1u, result->getNElements());
 	ASSERT_EQ(MeshElemType::TETRAHEDRON, result->getElement(0)->getGeomType());
 	ASSERT_NEAR(0.1666666666666667, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());
 	
@@ -469,7 +469,7 @@ TEST(MeshEditing, Prism2Tri)
 	MeshLib::MeshRevision rev(mesh);
 	MeshLib::Mesh* result = rev.simplifyMesh("new_mesh", 0.2);
 
-	ASSERT_EQ(1, result->getNElements());
+	ASSERT_EQ(1u, result->getNElements());
 	ASSERT_EQ(MeshElemType::TRIANGLE, result->getElement(0)->getGeomType());
 	ASSERT_NEAR(0.5, result->getElement(0)->getContent(), std::numeric_limits<double>::epsilon());