Index: LinearAlgebra/src/LinearAlgebra/VectorSet.hpp
===================================================================
--- LinearAlgebra/src/LinearAlgebra/VectorSet.hpp	(revision 955b91eef584d31f8d9958b67d1ea39b84eb1fb7)
+++ LinearAlgebra/src/LinearAlgebra/VectorSet.hpp	(revision 471dece7cc1b45cf20a25bfe33c2a44ddf8b481f)
@@ -18,4 +18,5 @@
 #include <algorithm>
 #include <limits>
+#include <boost/bind.hpp>
 #include <boost/lambda/bind.hpp>
 #include <boost/lambda/lambda.hpp>
@@ -28,5 +29,7 @@
 
 #include "Vector.hpp"
+
 #include <vector>
+#include "RealSpaceMatrix.hpp"
 
 // this tests, whether we actually have a Vector
@@ -50,5 +53,15 @@
 
   VectorSet(){}
+  VectorSet(const Set &_set) : Set(_set) {}
   virtual ~VectorSet(){}
+
+  /**
+   * transform all Vectors within this set by a RealSpaceMatrix
+   */
+  void transform(const RealSpaceMatrix &M){
+    // this is needed to allow template lookup
+    std::transform(this->begin(),this->end(),this->begin(),
+        boost::bind(static_cast<Vector(*)(const RealSpaceMatrix&,const Vector&)>(operator*), M, _1));
+  }
 
   /**
@@ -57,5 +70,6 @@
   void translate(const Vector &translater){
     // this is needed to allow template lookup
-    std::transform(this->begin(),this->end(),this->begin(),std::bind1st(std::plus<Vector>(),translater));
+    std::transform(this->begin(),this->end(),this->begin(),
+        std::bind1st(std::plus<Vector>(),translater));
   }
 
Index: LinearAlgebra/src/unittests/VectorSetUnitTest.cpp
===================================================================
--- LinearAlgebra/src/unittests/VectorSetUnitTest.cpp	(revision 955b91eef584d31f8d9958b67d1ea39b84eb1fb7)
+++ LinearAlgebra/src/unittests/VectorSetUnitTest.cpp	(revision 471dece7cc1b45cf20a25bfe33c2a44ddf8b481f)
@@ -25,4 +25,7 @@
 
 #include "VectorSetUnitTest.hpp"
+
+#include "RealSpaceMatrix.hpp"
+#include "VectorSet.hpp"
 
 #ifdef HAVE_TESTRUNNER
@@ -56,4 +59,17 @@
 }
 
+/** UnitTest for Cstor(Set &)
+ */
+void VectorSetTest::copyConstructorTest()
+{
+  VECTORSET(std::vector) worklist(list);
+  CPPUNIT_ASSERT_EQUAL( list.size(), worklist.size() );
+  std::vector<Vector>::const_iterator iter = list.begin();
+  VECTORSET(std::vector)::const_iterator workiter = worklist.begin();
+  for (;(iter != list.end()) && (workiter != worklist.end()); ++iter, ++workiter)
+    CPPUNIT_ASSERT( ((*iter)) == (*workiter) );
+}
+
+
 /** UnitTest for translate()
  */
@@ -69,8 +85,24 @@
 }
 
+/** UnitTest for transform()
+ */
+void VectorSetTest::transformTest()
+{
+  VECTORSET(std::vector) worklist(list);
+  RealSpaceMatrix M;
+  M.setIdentity();
+  M *= 2.;
+  worklist.transform(M);
+  VECTORSET(std::vector)::const_iterator iter = list.begin();
+  VECTORSET(std::vector)::const_iterator workiter = worklist.begin();
+  for (;(iter != list.end()) && (workiter != worklist.end()); ++iter, ++workiter)
+    CPPUNIT_ASSERT( (2.*(*iter)) == (*workiter) );
+}
+
 /** UnitTest for minDistance()
  */
 void VectorSetTest::minDistanceTest()
 {
+  VECTORSET(std::vector) worklist(list);
   {
     VECTORSET(std::vector) somelist;
@@ -83,11 +115,11 @@
   {
     Vector center(5.,0.,0.);
-    Vector mindist = list.minDistance(center);
+    Vector mindist = worklist.minDistance(center);
     CPPUNIT_ASSERT_EQUAL (Vector(2., 1., 0.)-center, mindist);
   }
   {
-    for (VECTORSET(std::vector)::const_iterator iter = list.begin();
-        iter != list.end(); ++iter) {
-      Vector mindist = list.minDistance(*iter);
+    for (VECTORSET(std::vector)::const_iterator iter = worklist.begin();
+        iter != worklist.end(); ++iter) {
+      Vector mindist = worklist.minDistance(*iter);
       CPPUNIT_ASSERT_EQUAL( Vector(0.,0.,0.), mindist );
     }
@@ -99,14 +131,15 @@
 void VectorSetTest::minDistSquaredTest()
 {
+  VECTORSET(std::vector) worklist(list);
   {
     Vector center(5.,0.,0.);
-    double mindist = list.minDistSquared(center);
+    double mindist = worklist.minDistSquared(center);
     double check = Vector(2., 1., 0.).DistanceSquared(center);
     CPPUNIT_ASSERT_EQUAL( check, mindist );
   }
   {
-    for (VECTORSET(std::vector)::const_iterator iter = list.begin();
-        iter != list.end(); ++iter) {
-      double mindist = list.minDistSquared(*iter);
+    for (VECTORSET(std::vector)::const_iterator iter = worklist.begin();
+        iter != worklist.end(); ++iter) {
+      double mindist = worklist.minDistSquared(*iter);
       CPPUNIT_ASSERT_EQUAL( 0., mindist );
     }
Index: LinearAlgebra/src/unittests/VectorSetUnitTest.hpp
===================================================================
--- LinearAlgebra/src/unittests/VectorSetUnitTest.hpp	(revision 955b91eef584d31f8d9958b67d1ea39b84eb1fb7)
+++ LinearAlgebra/src/unittests/VectorSetUnitTest.hpp	(revision 471dece7cc1b45cf20a25bfe33c2a44ddf8b481f)
@@ -17,5 +17,7 @@
 #include <cppunit/extensions/HelperMacros.h>
 
-#include "VectorSet.hpp"
+#include <vector>
+
+#include "Vector.hpp"
 
 /********************************************** Test classes **************************************/
@@ -24,5 +26,7 @@
 {
     CPPUNIT_TEST_SUITE( VectorSetTest) ;
+    CPPUNIT_TEST ( copyConstructorTest );
     CPPUNIT_TEST ( translateTest );
+    CPPUNIT_TEST ( transformTest );
     CPPUNIT_TEST ( minDistanceTest );
     CPPUNIT_TEST ( minDistSquaredTest );
@@ -33,10 +37,12 @@
     void tearDown();
 
+    void copyConstructorTest();
     void translateTest();
+    void transformTest();
     void minDistanceTest();
     void minDistSquaredTest();
 
 private:
-    VECTORSET(std::vector) list;
+    std::vector<Vector> list;
 };
 
