diff --git a/modules/base/src/export_helper/vec_to_list_conv.hh b/modules/base/src/export_helper/vec_to_list_conv.hh
index 470d82dd48945c7867514122ef5dbc233fad3849..d80671eaf4b5308833389d32e4eb914d7e43ce3c 100644
--- a/modules/base/src/export_helper/vec_to_list_conv.hh
+++ b/modules/base/src/export_helper/vec_to_list_conv.hh
@@ -25,32 +25,24 @@
 #include <vector>
 namespace ost{
 
-/// \brief helper to convert between python list and std::vector
+/// \brief helper to convert between python list tuple and std::vecot
 /// 
 /// Usage:
-/// #include vec_to_list_conv.hh
-/// std::vector<Real> fancy_vector();
-/// boost::python::list fancy_list = VecToList<Real>(fancy_vector);
+///
+/// register_to_python_converter<VectorToListConverter<T>,
+///                              std::vector<T>>()
                         
 
 template<typename T>
-boost::python::list VecToList(std::vector<T>& vec){
-  boost::python::list l;
-  for(typename std::vector<T>::iterator it=vec.begin();it!=vec.end();++it){
-    l.append(*it);
+struct VectorToListConverter {
+  static PyObject* convert(const std::vector<T>& vec) {
+    boost::python::list l;
+    for(typename std::vector<T>::const_iterator it=vec.begin();it!=vec.end();++it){
+      l.append(*it);
+    }
+    return boost::python::incref(l.ptr());
   }
-  return l;
-}
-
-template<typename T>
-std::vector<T> ListToVec(boost::python::list& l){
-
-  std::vector<T> vec;
-  for (int i = 0; i < boost::python::len(l); ++i){
-    vec.push_back(boost::python::extract<T>(l[i]));
-  }
-  return vec;
-}
+};
 
 }