diff --git a/LCS/WinCCWrapper/include/WinCCManager.h b/LCS/WinCCWrapper/include/WinCCManager.h
index e20173301ce710a339820b9be779fad17ede6c8b..620d4adeb6880338f34919832481f7cf0146ce18 100644
--- a/LCS/WinCCWrapper/include/WinCCManager.h
+++ b/LCS/WinCCWrapper/include/WinCCManager.h
@@ -72,6 +72,9 @@ public:
     //! get the datapoint with the given name and return it's DynVar value in parameter value. returns true upon success.
     bool get_datapoint(const std::string &name, DynVar &value);
 
+    bool get_datapoint(const std::string &name, std::vector<int> &value);
+
+
     //! mark the datapoint with given name valid. returns true upon success.
     bool set_datapoint_valid(const std::string &name) { return set_datapoint_validity(name, true, nullptr); }
     //! mark the datapoint with given name invalid. returns true upon success.
diff --git a/LCS/WinCCWrapper/include/WinCCWrapper.h b/LCS/WinCCWrapper/include/WinCCWrapper.h
index f81fa55ea6c834e6c668863a3257bf895584239f..76a5cc33e9562994fe71b2d6654555691f77fdf3 100644
--- a/LCS/WinCCWrapper/include/WinCCWrapper.h
+++ b/LCS/WinCCWrapper/include/WinCCWrapper.h
@@ -50,6 +50,8 @@ public:
 
     //! set the datapoint with given name to the given int value, mark it valid/invalid, returns true upon success.
     bool set_datapoint(const std::string &name, int value, bool valid=true);
+    //! set the datapoint with given name to the given std::vector<int> value, mark it valid/invalid, returns true upon success.
+    bool set_datapoint(const std::string &name, std::vector<int> &value, bool valid=true);
     //! set the datapoint with given name to the given long value, mark it valid/invalid, returns true upon success.
     bool set_datapoint(const std::string &name, long value, bool valid=true);
     //! set the datapoint with given name to the given float value, mark it valid/invalid, returns true upon success.
@@ -60,8 +62,6 @@ public:
     bool set_datapoint(const std::string &name, std::string value, bool valid=true);
     //! set the datapoint with given name to the given time_t value, mark it valid/invalid, returns true upon success.
     bool set_datapoint_time(const std::string &name, time_t value, bool valid=true);
-    //! set the datapoint with given name to the given DynVar value, mark it valid/invalid, returns true upon success.
-    bool set_datapoint(const std::string &name, DynVar value, bool valid=true);
 
     //! mark the datapoint with given name valid.
     bool set_datapoint_valid(const std::string &name);
@@ -80,8 +80,8 @@ public:
     std::string get_datapoint_string(const std::string &name);
     //! get the datapoint with the given name and return it as a time_t value if possible, otherwise an exception is raised.
     time_t get_datapoint_time(const std::string &name);
-    //! get the datapoint with the given name and return it as a DynVar value if possible, otherwise an exception is raised.
-    DynVar get_datapoint_DynVar(const std::string &name);
+    //! get the datapoint with the given name and return it as a std::vector<int> value if possible, otherwise an exception is raised.
+    std::vector<int> get_datapoint_int_vector(const std::string &name);
 
 private:
     // get_datapoint
diff --git a/LCS/WinCCWrapper/src/WinCCManager.cc b/LCS/WinCCWrapper/src/WinCCManager.cc
index 6b311931ec905e2820eac1f101ac223a9c89b76f..96ade22ce8bedc365ac07901bd9847e88a4bd129 100644
--- a/LCS/WinCCWrapper/src/WinCCManager.cc
+++ b/LCS/WinCCWrapper/src/WinCCManager.cc
@@ -32,6 +32,7 @@
 #include <IntegerVar.hxx>
 #include <LongVar.hxx>
 #include <TextVar.hxx>
+#include <DynVar.hxx>
 #include <cassert>
 #include <DynVar.hxx>
 
@@ -226,6 +227,28 @@ bool WinCCManager::get_datapoint_variable(const std::string &name, Variable *&va
 template <typename Tval>
 Variable::ConvertResult convert(Variable *var, Tval &value, Variable *&converted_var);
 
+template <>
+Variable::ConvertResult convert(Variable *var, std::vector<int> &value, Variable *&converted_var)
+{
+    Variable::ConvertResult cr = var->convert(VariableType::DYN_VAR, converted_var);
+    if(Variable::ConvertResult::OK == cr)
+    {
+        DynVar *dv = (DynVar*)converted_var;
+        value.resize(dv->getNumberOfItems());
+
+        for(unsigned int i = 0; dv->getNumberOfItems(); i++) {
+            Variable *elem = dv->getAt(i);
+            if(elem->inherits(VariableType::INTEGER_VAR)) {
+                value[i] = ((IntegerVar*)elem)->getValue();
+            }
+            else
+                return Variable::ConvertResult::CONV_NOT_DEFINED;
+        }
+    }
+    return cr;
+}
+
+
 template <>
 Variable::ConvertResult convert(Variable *var, int &value, Variable *&converted_var)
 {
@@ -286,19 +309,6 @@ Variable::ConvertResult convert(Variable *var, struct tm &value, Variable *&conv
     return cr;
 }
 
-template <>
-Variable::ConvertResult convert(Variable *var, int[] &value, Variable *&converted_var)
-{
-    Variable::ConvertResult cr = var->convert(VariableType::DYN_VAR, converted_var);
-    if(Variable::ConvertResult::OK == cr) {
-        for (int i = 0; i < value.getNumberOfItems(); i++) {
-            value[i] = ((DynVar*)converted_var)->getNext();
-        }
-    }
-
-    return cr;
-}
-
 //internal generic method to get the typed (Tval) value of a datapoint
 //used by the public strictly typed methods
 template <typename Tval>
@@ -356,7 +366,7 @@ bool WinCCManager::get_datapoint(const std::string &name, struct tm &value)
     return _get_datapoint(name, value);
 }
 
-bool WinCCManager::get_datapoint(const std::string &name, DynVar &value)
+bool WinCCManager::get_datapoint(const std::string &name, std::vector<int> &value)
 {
     return _get_datapoint(name, value);
 }
diff --git a/LCS/WinCCWrapper/src/WinCCWrapper.cc b/LCS/WinCCWrapper/src/WinCCWrapper.cc
index 239e30f6b1faf193cc15bbf5009aac6985353de4..b3d62bcbf000560b2cdeeed96d810d66ebd6e862 100644
--- a/LCS/WinCCWrapper/src/WinCCWrapper.cc
+++ b/LCS/WinCCWrapper/src/WinCCWrapper.cc
@@ -74,6 +74,18 @@ bool WinCCWrapper::set_datapoint(const std::string &name, int value, bool valid)
     return manager->set_datapoint(name + DP_SUFFIX, variable, valid);
 }
 
+bool WinCCWrapper::set_datapoint(const std::string &name, std::vector<int> &value, bool valid)
+{
+    DynVar variable(VariableType::INTEGER_VAR);
+
+    for(auto iter = value.cbegin(); iter != value.cend(); iter++) {
+        IntegerVar elem{*iter};
+        variable.append(elem);
+    }
+
+    return manager->set_datapoint(name + DP_SUFFIX, variable, valid);
+}
+
 bool WinCCWrapper::set_datapoint(const std::string &name, long value, bool valid)
 {
     LongVar variable{value};
@@ -110,13 +122,6 @@ bool WinCCWrapper::set_datapoint_time(const std::string &name, time_t value, boo
     return manager->set_datapoint(name + DP_SUFFIX, variable, valid);
 }
 
-bool WinCCWrapper::set_datapoint(const std::string &name, DynVar value, bool valid)
-{
-    DynVar variable{value};
-
-    return manager->set_datapoint(name + DP_SUFFIX, variable, valid);
-}
-
 // get_datapoint
 template <typename T>
 bool WinCCWrapper::get_datapoint(const std::string &name, T &value)
@@ -132,6 +137,14 @@ int WinCCWrapper::get_datapoint_int(const std::string &name)
     throw std::runtime_error("Could not get datapoint");
 }
 
+std::vector<int> WinCCWrapper::get_datapoint_int_vector(const std::string &name)
+{
+    std::vector<int> value;
+    if(get_datapoint(name, value))
+        return value;
+    throw std::runtime_error("Could not get datapoint");
+}
+
 long WinCCWrapper::get_datapoint_long(const std::string &name)
 {
     long value;
@@ -172,14 +185,6 @@ time_t WinCCWrapper::get_datapoint_time(const std::string &name)
     throw std::runtime_error("Could not get datapoint");
 }
 
-DynVar WinCCWrapper::get_datapoint_DynVar(const std::string &name)
-{
-    DynVar value;
-    if(get_datapoint(name, value))
-        return value;
-    throw std::runtime_error("Could not get datapoint");
-}
-
 bool WinCCWrapper::set_datapoint_valid(const std::string &name)
 {
     return manager->set_datapoint_valid(name + DP_SUFFIX);
diff --git a/LCS/WinCCWrapper/src/WinCCWrapper_boost_python.cc b/LCS/WinCCWrapper/src/WinCCWrapper_boost_python.cc
index f635cbc1f704786ca825afad5d644bbd5ad12e70..9e4818ab3fd65a4018be312212ccee031fe08a27 100644
--- a/LCS/WinCCWrapper/src/WinCCWrapper_boost_python.cc
+++ b/LCS/WinCCWrapper/src/WinCCWrapper_boost_python.cc
@@ -26,6 +26,7 @@ BOOST_PYTHON_MODULE(pywincc)
     using namespace LOFAR::WINCCWRAPPER;
 
     bool (WinCCWrapper::*set_datapoint_int)(const std::string&, int, bool) = &WinCCWrapper::set_datapoint;
+    bool (WinCCWrapper::*set_datapoint_int_vector)(const std::string&, std::vector<int>&, bool) = &WinCCWrapper::set_datapoint;
     bool (WinCCWrapper::*set_datapoint_long)(const std::string&, long, bool) = &WinCCWrapper::set_datapoint;
     bool (WinCCWrapper::*set_datapoint_float)(const std::string&, float, bool) = &WinCCWrapper::set_datapoint;
     bool (WinCCWrapper::*set_datapoint_bool)(const std::string&, bool, bool) = &WinCCWrapper::set_datapoint;
@@ -33,10 +34,10 @@ BOOST_PYTHON_MODULE(pywincc)
     bool (WinCCWrapper::*set_datapoint_time)(const std::string&, time_t, bool) = &WinCCWrapper::set_datapoint_time;
     bool (WinCCWrapper::*set_datapoint_valid)(const std::string&) = &WinCCWrapper::set_datapoint_valid;
     bool (WinCCWrapper::*set_datapoint_invalid)(const std::string&) = &WinCCWrapper::set_datapoint_invalid;
-    bool (WinCCWrapper::*set_datapoint_DynVar)(const std::string&, DynVar, bool) = &WinCCWrapper::set_datapoint;
 
     class_<WinCCWrapper>("WinCCWrapper", init<const std::string&>())
         .def("set_datapoint_int", set_datapoint_int)
+        .def("set_datapoint_int_vector", set_datapoint_int_vector)
         .def("set_datapoint_long", set_datapoint_long)
         .def("set_datapoint_float", set_datapoint_float)
         .def("set_datapoint_bool", set_datapoint_bool)
@@ -45,15 +46,14 @@ BOOST_PYTHON_MODULE(pywincc)
         .def("set_datapoint", set_datapoint_float) // 'common'/'generic' set_datapoint python method just calls set_datapoint_float
         .def("set_datapoint_valid", set_datapoint_valid)
         .def("set_datapoint_invalid", set_datapoint_invalid)
-        .def("set_datapoint_DynVar", set_datapoint_DynVar)
         .def("get_datapoint_int", &WinCCWrapper::get_datapoint_int)
+        .def("get_datapoint_int_vector", &WinCCWrapper::get_datapoint_int_vector)
         .def("get_datapoint_long", &WinCCWrapper::get_datapoint_long)
         .def("get_datapoint_float", &WinCCWrapper::get_datapoint_float)
         .def("get_datapoint_bool", &WinCCWrapper::get_datapoint_bool)
         .def("get_datapoint_string", &WinCCWrapper::get_datapoint_string)
         .def("get_datapoint_time", &WinCCWrapper::get_datapoint_time)
         .def("get_datapoint", &WinCCWrapper::get_datapoint_float) // 'common'/'generic' get_datapoint python method just calls get_datapoint_float
-        .def("get_datapoint_DynVar", &WinCCWrapper:get_datapoint_DynVar)
     ;
 }