Index: libcfa/src/vec/vec3.hfa
===================================================================
--- libcfa/src/vec/vec3.hfa	(revision 7799f797c8abf2c4e812fa8a03dbab0975bc964f)
+++ libcfa/src/vec/vec3.hfa	(revision ae09808982826f9762dcb49b7658c22d1767683a)
@@ -71,5 +71,5 @@
     }
 
-    // Scalar Multiplication
+    // Multiplication
     forall(| multiply(T)) {
     vec3(T) ?*?(vec3(T) v, T scalar) with (v) { // TODO (can't make this const ref)
@@ -79,18 +79,32 @@
         return v * scalar;
     }
+    vec3(T) ?*?(vec3(T) u, vec3(T) v) {
+        return [u.x * v.x, u.y * v.y, u.z * v.z];
+    }
     vec3(T)& ?*=?(vec3(T)& v, T scalar) {
         v = v * scalar;
         return v;
     }
+    vec3(T)& ?*=?(vec3(T)& u, vec3(T) v) {
+        u = u * v;
+        return u;
+    }
     }
 
-    // Scalar Division
+    // Division
     forall(| divide(T)) {
     vec3(T) ?/?(vec3(T) v, T scalar) with (v) {
         return [x / scalar, y / scalar, z / scalar];
     }
+    vec3(T) ?/?(vec3(T) u, vec3(T) v) {
+        return [u.x / v.x, u.y / v.y, u.z / v.z];
+    }
     vec3(T)& ?/=?(vec3(T)& v, T scalar) with (v) {
         v = v / scalar;
         return v;
+    }
+    vec3(T)& ?/=?(vec3(T)& u, vec3(T) v) {
+        u = u / v;
+        return u;
     }
     }
