diff --git a/python/pyWrap.cpp b/python/pyWrap.cpp
index c9194ff..cb7b6b3 100644
--- a/python/pyWrap.cpp
+++ b/python/pyWrap.cpp
@@ -938,7 +938,7 @@ PYBIND11_MODULE(VIENNAPS_MODULE_NAME, module) {
   //                               GEOMETRIES
   // ***************************************************************************
 
-  // MakePlane
+  // Plane
   pybind11::class_<MakePlane<T, D>>(module, "MakePlane")
       .def(pybind11::init<DomainType, const T, const T, const T, const T,
                           const bool, const Material>(),
@@ -953,7 +953,7 @@ PYBIND11_MODULE(VIENNAPS_MODULE_NAME, module) {
       .def("apply", &MakePlane<T, D>::apply,
            "Create a plane geometry or add plane to existing geometry.");
 
-  // MakeTrench
+  // Trench
   pybind11::class_<MakeTrench<T, D>>(module, "MakeTrench")
       .def(pybind11::init<DomainType, const T, const T, const T, const T,
                           const T, const T, const T, const bool, const bool,
@@ -968,7 +968,7 @@ PYBIND11_MODULE(VIENNAPS_MODULE_NAME, module) {
            pybind11::arg("material") = Material::None)
       .def("apply", &MakeTrench<T, D>::apply, "Create a trench geometry.");
 
-  // MakeHole
+  // Hole
   pybind11::class_<MakeHole<T, D>>(module, "MakeHole")
       .def(pybind11::init<DomainType, const T, const T, const T, const T,
                           const T, const T, const T, const bool, const bool,
@@ -983,7 +983,7 @@ PYBIND11_MODULE(VIENNAPS_MODULE_NAME, module) {
            pybind11::arg("material") = Material::None)
       .def("apply", &MakeHole<T, D>::apply, "Create a hole geometry.");
 
-  // MakeFin
+  // Fin
   pybind11::class_<MakeFin<T, D>>(module, "MakeFin")
       .def(pybind11::init<DomainType, const T, const T, const T, const T,
                           const T, const T, const T, const bool, const bool,
@@ -997,7 +997,7 @@ PYBIND11_MODULE(VIENNAPS_MODULE_NAME, module) {
            pybind11::arg("material") = Material::None)
       .def("apply", &MakeFin<T, D>::apply, "Create a fin geometry.");
 
-  // MakeStack
+  // Stack
   pybind11::class_<MakeStack<T, D>>(module, "MakeStack")
       .def(pybind11::init<DomainType &, const T, const T, const T, const int,
                           const T, const T, const T, const T, const T,
@@ -1104,7 +1104,7 @@ PYBIND11_MODULE(VIENNAPS_MODULE_NAME, module) {
       .def("setIntegrationScheme", &Process<T, D>::setIntegrationScheme,
            "Set the integration scheme for solving the level-set equation. "
            "Possible integration schemes are specified in "
-           "lsIntegrationSchemeEnum.")
+           "viennals::IntegrationSchemeEnum.")
       .def("setTimeStepRatio", &Process<T, D>::setTimeStepRatio,
            "Set the CFL condition to use during advection. The CFL condition "
            "sets the maximum distance a surface can be moved during one "
@@ -1168,7 +1168,8 @@ PYBIND11_MODULE(VIENNAPS_MODULE_NAME, module) {
       .def("saveVolumeMesh", &Domain<T, D>::saveVolumeMesh,
            pybind11::arg("filename"),
            "Save the volume representation of the domain.")
-      .def("saveLevelSets", &Domain<T, D>::saveLevelSets)
+      .def("saveLevelSets", &Domain<T, D>::saveLevelSets,
+           pybind11::arg("filename"))
       .def("clear", &Domain<T, D>::clear);
 
   // MaterialMap
@@ -1227,12 +1228,10 @@ PYBIND11_MODULE(VIENNAPS_MODULE_NAME, module) {
                   "Calculate the mean thermal velocity of a gas molecule.");
 
   // Planarize
-  pybind11::class_<Planarize<T, D>, SmartPointer<Planarize<T, D>>>(module,
-                                                                   "Planarize")
-      .def(pybind11::init(&SmartPointer<Planarize<T, D>>::New<>))
-      .def(pybind11::init(
-               &SmartPointer<Planarize<T, D>>::New<DomainType &, const T>),
-           pybind11::arg("geometry"), pybind11::arg("cutoffHeight") = 0.)
+  pybind11::class_<Planarize<T, D>>(module, "Planarize")
+      .def(pybind11::init())
+      .def(pybind11::init<DomainType &, const T>(), pybind11::arg("geometry"),
+           pybind11::arg("cutoffHeight") = 0.)
       .def("setDomain", &Planarize<T, D>::setDomain,
            "Set the domain in the planarization.")
       .def("setCutoffPosition", &Planarize<T, D>::setCutoffPosition,
@@ -1275,13 +1274,10 @@ PYBIND11_MODULE(VIENNAPS_MODULE_NAME, module) {
           },
           "Get the bounds of the geometry.");
 
-  pybind11::class_<GDSReader<T, D>, SmartPointer<GDSReader<T, D>>>(module,
-                                                                   "GDSReader")
+  pybind11::class_<GDSReader<T, D>>(module, "GDSReader")
       // constructors
-      .def(pybind11::init(&SmartPointer<GDSReader<T, D>>::New<>))
-      .def(pybind11::init(
-          &SmartPointer<GDSReader<T, D>>::New<SmartPointer<GDSGeometry<T, D>> &,
-                                              std::string>))
+      .def(pybind11::init())
+      .def(pybind11::init<SmartPointer<GDSGeometry<T, D>> &, std::string>())
       // methods
       .def("setGeometry", &GDSReader<T, D>::setGeometry,
            "Set the domain to be parsed in.")
@@ -1297,21 +1293,24 @@ PYBIND11_MODULE(VIENNAPS_MODULE_NAME, module) {
       // methods
       .def("deepCopy", &Domain<T, 3>::deepCopy)
       .def("insertNextLevelSet", &Domain<T, 3>::insertNextLevelSet,
-           pybind11::arg("levelSet"), pybind11::arg("wrapLowerLevelSet") = true,
+           pybind11::arg("levelset"), pybind11::arg("wrapLowerLevelSet") = true,
            "Insert a level set to domain.")
       .def("insertNextLevelSetAsMaterial",
            &Domain<T, 3>::insertNextLevelSetAsMaterial,
            pybind11::arg("levelSet"), pybind11::arg("material"),
            pybind11::arg("wrapLowerLevelSet") = true,
            "Insert a level set to domain as a material.")
-      .def("duplicateTopLevelSet", &Domain<T, 3>::duplicateTopLevelSet)
-      .def("applyBooleanOperation", &Domain<T, 3>::applyBooleanOperation)
+      .def("duplicateTopLevelSet", &Domain<T, 3>::duplicateTopLevelSet,
+           "Duplicate the top level set. Should be used before a deposition "
+           "process.")
       .def("removeTopLevelSet", &Domain<T, 3>::removeTopLevelSet)
+      .def("applyBooleanOperation", &Domain<T, 3>::applyBooleanOperation)
+      .def("removeLevelSet", &Domain<T, 3>::removeLevelSet)
+      .def("removeMaterial", &Domain<T, 3>::removeMaterial)
       .def("setMaterialMap", &Domain<T, 3>::setMaterialMap)
       .def("getMaterialMap", &Domain<T, 3>::getMaterialMap)
       .def("generateCellSet", &Domain<T, 3>::generateCellSet,
-           pybind11::arg("position"), pybind11::arg("coverMaterial"),
-           pybind11::arg("isAboveSurface"), "Generate the cell set.")
+           "Generate the cell set.")
       .def("getLevelSets", &Domain<T, 3>::getLevelSets)
       .def("getCellSet", &Domain<T, 3>::getCellSet, "Get the cell set.")
       .def("getGrid", &Domain<T, 3>::getGrid, "Get the grid")
@@ -1320,7 +1319,7 @@ PYBIND11_MODULE(VIENNAPS_MODULE_NAME, module) {
            pybind11::arg("filename"), pybind11::arg("width") = 1,
            "Save the level set grids of layers in the domain.")
       .def("saveSurfaceMesh", &Domain<T, 3>::saveSurfaceMesh,
-           pybind11::arg("filename"), pybind11::arg("addMaterialIds") = true,
+           pybind11::arg("filename"), pybind11::arg("addMaterialIds") = false,
            "Save the surface of the domain.")
       .def("saveVolumeMesh", &Domain<T, 3>::saveVolumeMesh,
            pybind11::arg("filename"),