diff --git a/Demo/classes/Vec.py b/Demo/classes/Vec.py
index 56cb839..b8771ea 100644
--- a/Demo/classes/Vec.py
+++ b/Demo/classes/Vec.py
@@ -1,23 +1,41 @@
-# A simple vector class
-
-
-def vec(*v):
-    return Vec(*v)
-
-
 class Vec:
+    """ A simple vector class
 
+    Instances of the Vec class  can be constructed from numbers
+
+    >>> a = Vec(1, 2, 3)
+    >>> b = Vec(3, 2, 1)
+
+    added
+    >>> a + b
+    Vec(4, 4, 4)
+
+    subtracted
+    >>> a - b
+    Vec(-2, 0, 2)
+
+    and multiplied by a scalar on the left
+    >>> 3.0 * a
+    Vec(3.0, 6.0, 9.0)
+
+    or on the right
+    >>> a * 3.0
+    Vec(3.0, 6.0, 9.0)
+    """
     def __init__(self, *v):
         self.v = list(v)
 
-    def fromlist(self, v):
+    @classmethod
+    def fromlist(cls, v):
         if not isinstance(v, list):
             raise TypeError
-        self.v = v[:]
-        return self
+        inst = cls()
+        inst.v = v
+        return inst
 
     def __repr__(self):
-        return 'vec(' + repr(self.v)[1:-1] + ')'
+        args = ', '.join(repr(x) for x in self.v)
+        return 'Vec({0})'.format(args)
 
     def __len__(self):
         return len(self.v)
@@ -27,28 +45,24 @@
 
     def __add__(self, other):
         # Element-wise addition
-        v = map(lambda x, y: x+y, self, other)
-        return Vec().fromlist(v)
+        v = [x + y for x, y in zip(self.v, other.v)]
+        return Vec.fromlist(v)
 
     def __sub__(self, other):
         # Element-wise subtraction
-        v = map(lambda x, y: x-y, self, other)
-        return Vec().fromlist(v)
+        v = [x - y for x, y in zip(self.v, other.v)]
+        return Vec.fromlist(v)
 
     def __mul__(self, scalar):
         # Multiply by scalar
-        v = map(lambda x: x*scalar, self.v)
-        return Vec().fromlist(v)
+        v = [x * scalar for x in self.v]
+        return Vec.fromlist(v)
 
+    __rmul__ = __mul__
 
 
 def test():
-    a = vec(1, 2, 3)
-    b = vec(3, 2, 1)
-    print a
-    print b
-    print a+b
-    print a-b
-    print a*3.0
+    import doctest
+    doctest.testmod()
 
 test()
