diff --git a/LaplacePlugin.cc b/LaplacePlugin.cc
index 4c78be5d593fb9cf27dd6ec7db6789040ed572e0..1e7c462666138ace0126309d6f4697f1d7184b32 100644
--- a/LaplacePlugin.cc
+++ b/LaplacePlugin.cc
@@ -116,22 +116,22 @@ void LaplaceLengthPlugin::computeLaplaceLength(MeshT* _mesh) {
 
   QElapsedTimer time;
   time.start();
-  std::vector< typename MeshT::VertexHandle > handles;
+  std::vector< typename OpenMesh::SmartVertexHandle > handles;
   handles.reserve(_mesh->n_vertices());
-  for ( typename MeshT::VertexIter v_it = _mesh->vertices_begin() ; v_it != _mesh->vertices_end(); ++v_it)
-    handles.push_back( *v_it );
+  for ( auto v_it : _mesh->vertices())
+    handles.push_back( v_it );
 
   #ifdef USE_OPENMP
     #pragma omp parallel for
   #endif
   for ( int i = 0 ; i < (int)handles.size(); ++i ) {
-    const typename MeshT::VertexHandle handle = handles[i];
+    const typename OpenMesh::SmartVertexHandle handle = handles[i];
 
     ACG::Vec3d laplace(0.0,0.0,0.0);
-    for ( typename MeshT::VertexVertexIter vv_it(*_mesh , handle) ; vv_it.is_valid() ; ++vv_it )
-        laplace += _mesh->point(*vv_it) - _mesh->point(handle);
+    for ( auto vv_it : handle.vertices() )
+        laplace += _mesh->point(vv_it) - _mesh->point(handle);
 
-    laplace = 1.0 /(double)_mesh->valence(handle) * laplace;
+    laplace = 1.0 /(double)handle.valence()* laplace;
     _mesh->property(laplace_vector_property,handle) = laplace;
     _mesh->property(laplace_length_property,handle) = laplace.norm();
   }
@@ -161,21 +161,21 @@ void LaplaceLengthPlugin::computeLaplaceSquaredLength(MeshT* _mesh) {
 
   QElapsedTimer time;
   time.start();
-  std::vector< typename MeshT::VertexHandle > handles;
+  std::vector< typename OpenMesh::SmartVertexHandle > handles;
   handles.reserve(_mesh->n_vertices());
-  for ( typename MeshT::VertexIter v_it = _mesh->vertices_begin() ; v_it != _mesh->vertices_end(); ++v_it)
-    handles.push_back( *v_it );
+  for ( auto v_it : _mesh->vertices())
+    handles.push_back( v_it );
 
   #ifdef USE_OPENMP
     #pragma omp parallel for
   #endif
   for ( int i = 0 ; i < (int)handles.size(); ++i ) {
-    const typename MeshT::VertexHandle handle = handles[i];
+    const typename OpenMesh::SmartVertexHandle handle = handles[i];
 
     ACG::Vec3d laplace(0.0,0.0,0.0);
-    for ( typename MeshT::VertexVertexIter vv_it(*_mesh , handle) ; vv_it.is_valid() ; ++vv_it )
-        laplace += _mesh->property(laplace_property,*vv_it) - _mesh->property(laplace_property,handle);
-    laplace = 1.0 /(double)_mesh->valence(handle) * laplace;
+    for ( auto vv_it : handle.vertices() )
+        laplace += _mesh->property(laplace_property,vv_it) - _mesh->property(laplace_property,handle);
+    laplace = 1.0 /(double)handle.valence() * laplace;
     _mesh->property(laplace_squared,handle) = laplace.norm();
   }