Index: libcfa/src/collections/vector2.hfa
===================================================================
--- libcfa/src/collections/vector2.hfa	(revision 641707dcb4cb8e2cd6cf3d4ac4261fc2b8e5ee4c)
+++ libcfa/src/collections/vector2.hfa	(revision ef9f11cd3af63b99ea71ab41489d4e9eab7c075a)
@@ -13,4 +13,9 @@
 // Update Count     : 2
 //
+
+// This libcfa header and the vector-demo test form a standalone POC.
+// The 'vector' is really a host for a style of iterator.
+// The iterators represent a style proposed to be part of "how CFA collections should do iterators."
+// The vector API is not built out, beyond what's needed to test the iterators.
 
 #pragma once
@@ -75,12 +80,11 @@
     void ?{}( vector_exit(T) &, vector(T) * ) = void;
 
-    void ^?{}( vector_exit(T) & );
     void ?{}( vector_exit(T) &, vector_transit(T) & );
     void ?{}( vector_exit(T) &, vector_exit(T) & );
+    void ^?{}( vector_exit(T) & );
 
     T ?`val( vector_exit(T) & src );
     void ?=?( vector_exit(T) & dst, T val );
-    T & ?=?( T & dst, vector_exit(T) & src );
-    void ?*=?( T & dst, vector_exit(T) & src );
+    void ?*=?( T & dst, vector_exit(T) & src ); // wish it were ?=?, but that's not working
 
     bool ?`moveNext( vector_exit(T) & it );
@@ -141,10 +145,4 @@
     void ^?{}( vector_transit(T) & ) {}
 
-
-    vector_transit(T) ?[?]( vector( T ) & vec, ptrdiff_t idx ) {
-        // call autogen constructor deleted at end of hfa
-        vector_transit(T) ret = { & vec, idx };
-        return ret;
-    }
 
     T & findElemMem_$( vector(T) & v, ptrdiff_t idx ) {
@@ -176,4 +174,5 @@
         this.invec_$->exit_refcount_$ ++;
     }
+
     void ?{}( vector_exit(T) & this, vector_exit(T) & src ){
         ( this.invec_$ ){ src.invec_$ };
@@ -189,4 +188,8 @@
     T ?`val( vector_exit(T) & src ) {
         return *src.item_$;
+    }
+
+    void ?=?( vector_exit(T) & dst, T val ) {
+        *dst.item_$ = val;
     }
 
@@ -243,5 +246,5 @@
     // vec internals
 
-    void grow( vector( T ) & this ) {
+    void grow_$( vector( T ) & this ) {
         size_t newCapacity = 2 * (this.buffer_end_$ - this.buffer_first_$);
         T * newItems = aalloc( newCapacity );
@@ -263,4 +266,10 @@
     }
 
+    bool inRange_$( T * query, T * from, T * to) {
+        if (from == to) return false;
+        if (from < to) return from <= query && query < to;
+        return query < to || from <= query;
+    }
+
     // vec api
 
@@ -269,5 +278,5 @@
         if (col`length >= col`capacity) {
             assert (col`length == col`capacity);
-            grow(col);
+            grow_$(col);
         }
         // call autogen constructor deleted at end of hfa
@@ -280,4 +289,10 @@
     }
 
+    vector_transit(T) ?[?]( vector( T ) & vec, ptrdiff_t idx ) {
+        // call autogen constructor deleted at end of hfa
+        vector_transit(T) ret = { & vec, idx };
+        return ret;
+    }
+
     vector_exit(T) ?`origin( vector( T ) & vec ) {
 
@@ -294,8 +309,12 @@
     }
 
-    bool inRange_$( T * query, T * from, T * to) {
-        if (from == to) return false;
-        if (from < to) return from <= query && query < to;
-        return query < to || from <= query;
+    size_t ?`capacity( vector(T) & v ) {
+        return v.buffer_end_$ - v.buffer_first_$;
+    }
+
+    size_t ?`length( vector(T) & v ) {
+        if (v.elems_first_$ == 0p) return 0;
+        if (v.elems_first_$ < v.elems_end_$ ) return v.elems_end_$ - v.elems_first_$;
+        return v.buffer_end_$ - v.elems_first_$ + v.elems_end_$ - v.buffer_first_$;
     }
 
@@ -304,5 +323,5 @@
         if (col`length >= col`capacity) {
             assert (col`length == col`capacity);
-            grow(col);
+            grow_$(col);
         }
         
@@ -339,15 +358,4 @@
     }
 
-    size_t ?`capacity( vector(T) & v ) {
-        return v.buffer_end_$ - v.buffer_first_$;
-    }
-
-    size_t ?`length( vector(T) & v ) {
-        if (v.elems_first_$ == 0p) return 0;
-        if (v.elems_first_$ < v.elems_end_$ ) return v.elems_end_$ - v.elems_first_$;
-        return v.buffer_end_$ - v.elems_first_$ + v.elems_end_$ - v.buffer_first_$;
-    }
-
-
 } // forall T
 
