diff --git a/MeshLib/MeshInformation.h b/MeshLib/MeshInformation.h
index 9f7e51c84ca5e92bacf30aeca924af08c80bb25e..e6867e7daacc56c3e097aa2d9e65451b3041ff34 100644
--- a/MeshLib/MeshInformation.h
+++ b/MeshLib/MeshInformation.h
@@ -38,8 +38,8 @@ public:
     static std::pair<T, T> const
         getValueBounds(MeshLib::Mesh const& mesh, std::string const& name)
     {
-        boost::optional<MeshLib::PropertyVector<T> const&> 
-            data_vec (mesh.getProperties().getPropertyVector<T>(name));
+        auto const* const data_vec =
+            mesh.getProperties().getPropertyVector<T>(name);
         if (!data_vec)
             return {std::numeric_limits<T>::max(), std::numeric_limits<T>::max()};
         if (data_vec->empty()) {
diff --git a/MeshLib/MeshSearch/ElementSearch.h b/MeshLib/MeshSearch/ElementSearch.h
index c68115ac80a3f15b59acf487ac62496a5c7ae245..fa5625b9d91f72f6534b4591939992e1a1d7d3a4 100644
--- a/MeshLib/MeshSearch/ElementSearch.h
+++ b/MeshLib/MeshSearch/ElementSearch.h
@@ -48,24 +48,25 @@ public:
         PROPERTY_TYPE const property_value,
         std::string const& property_name = "MaterialIDs")
     {
-        boost::optional<MeshLib::PropertyVector<PROPERTY_TYPE> const&> opt_pv(
+        auto const* const pv =
             _mesh.getProperties().getPropertyVector<PROPERTY_TYPE>(
-                property_name));
-        if (!opt_pv) {
+                property_name);
+        if (!pv)
+        {
             WARN("Property \"%s\" not found in mesh.", property_name.c_str());
             return 0;
         }
 
-        MeshLib::PropertyVector<PROPERTY_TYPE> const& pv(opt_pv.get());
-        if (pv.getMeshItemType() != MeshLib::MeshItemType::Cell) {
+        if (pv->getMeshItemType() != MeshLib::MeshItemType::Cell)
+        {
             WARN("The property \"%s\" is not assigned to mesh elements.",
                  property_name.c_str());
             return 0;
         }
 
         std::vector<std::size_t> matchedIDs;
-        for (std::size_t i(0); i < pv.getNumberOfTuples(); ++i) {
-            if (pv[i] == property_value)
+        for (std::size_t i(0); i < pv->getNumberOfTuples(); ++i) {
+            if ((*pv)[i] == property_value)
                 matchedIDs.push_back(i);
         }
 
diff --git a/MeshLib/Vtk/VtkMappedMeshSource.h b/MeshLib/Vtk/VtkMappedMeshSource.h
index a60306cd5e5c278b0808d0d1a9f6003ca01c8954..4c0082f6a8a004cf78bb58d34241da33e808b887 100644
--- a/MeshLib/Vtk/VtkMappedMeshSource.h
+++ b/MeshLib/Vtk/VtkMappedMeshSource.h
@@ -26,8 +26,6 @@
 #include <string>
 #include <vector>
 
-#include <boost/optional.hpp>
-
 #include <vtkCellData.h>
 #include <vtkPointData.h>
 #include <vtkNew.h>
@@ -88,8 +86,7 @@ private:
     bool addProperty(MeshLib::Properties const& properties,
                      std::string const& prop_name) const
     {
-        boost::optional<MeshLib::PropertyVector<T> const &> propertyVector(
-            properties.getPropertyVector<T>(prop_name));
+        auto* const propertyVector = properties.getPropertyVector<T>(prop_name);
         if(!propertyVector)
             return false;