Index: src/examples/array.c
===================================================================
--- src/examples/array.c	(revision 3e8fb3b1d54a811db409b242954833d6e4e067eb)
+++ src/examples/array.c	(revision 102b0cd092c7b315f62202d82951bd117f096a09)
@@ -5,10 +5,10 @@
 // file "LICENCE" distributed with Cforall.
 //
-// array.c -- 
+// array.c --
 //
 // Author           : Richard C. Bilson
 // Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 18:13:52 2016
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Apr 27 17:21:52 2016
 // Update Count     : 3
 //
@@ -26,5 +26,5 @@
 // The first element is always at index 0.
 forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) )
-elt_type * begin( array_type array ) {
+elt_type * begin( array_type * array ) {
 	return &array[ 0 ];
 }
@@ -32,5 +32,5 @@
 // The end iterator should point one past the last element.
 forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) )
-elt_type * end( array_type array ) {
+elt_type * end( array_type * array ) {
 	return &array[ last( array ) ] + 1;
 }
Index: src/examples/array.h
===================================================================
--- src/examples/array.h	(revision 3e8fb3b1d54a811db409b242954833d6e4e067eb)
+++ src/examples/array.h	(revision 102b0cd092c7b315f62202d82951bd117f096a09)
@@ -5,10 +5,10 @@
 // file "LICENCE" distributed with Cforall.
 //
-// array.h -- 
+// array.h --
 //
 // Author           : Richard C. Bilson
 // Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 18:13:35 2016
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Apr 27 17:26:04 2016
 // Update Count     : 5
 //
@@ -26,6 +26,6 @@
 
 // A bounded array is an array that carries its maximum index with it.
-trait bounded_array( otype array_type, otype elt_type | array( array_type, elt_type ) ) {
-	int last( array_type );
+trait bounded_array( otype array_type, otype elt_type | array( array_type *, elt_type ) ) {
+	int last( array_type * );
 };
 
@@ -41,8 +41,9 @@
 // return iterators corresponding to the first element and the one-past-the-end element, STL-style.
 forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) )
-elt_type *begin( array_type );
+elt_type * begin( array_type * array );
 
+// The end iterator should point one past the last element.
 forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) )
-elt_type *end( array_type );
+elt_type * end( array_type * array );
 
 #endif // ARRAY_H
Index: src/examples/rational.c
===================================================================
--- src/examples/rational.c	(revision 3e8fb3b1d54a811db409b242954833d6e4e067eb)
+++ src/examples/rational.c	(revision 102b0cd092c7b315f62202d82951bd117f096a09)
@@ -11,6 +11,6 @@
 // Created On       : Mon Mar 28 08:43:12 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Apr  8 11:27:48 2016
-// Update Count     : 21
+// Last Modified On : Wed May  4 14:19:36 2016
+// Update Count     : 24
 // 
 
@@ -20,23 +20,20 @@
 
 int main() {
-	Rational a, b, c;
 	sout | "constructor" | endl;
-	a = rational( 3 );
-	b = rational( 4 );
-	c = rational();
+	Rational a = { 3 }, b = { 4 }, c;
 	sout | a | b | c | endl;
-	a = rational( 4, 8 );
-	b = rational( 5, 7 );
+	a = (Rational){ 4, 8 };
+	b = (Rational){ 5, 7 };
 	sout | a | b | endl;
-	a = rational( -2, -3 );
-	b = rational( 3, -2 );
+	a = (Rational){ -2, -3 };
+	b = (Rational){ 3, -2 };
 	sout | a | b | endl;
-	a = rational( -2, 3 );
-	b = rational( 3, 2 );
+	a = (Rational){ -2, 3 };
+	b = (Rational){ 3, 2 };
 	sout | a | b | endl;
 
 	sout | "logical" | endl;
-	a = rational( -2 );
-	b = rational( -3, 2 );
+	a = (Rational){ -2 };
+	b = (Rational){ -3, 2 };
 	sout | a | b | endl;
 	sout | a == 1 | endl;
@@ -55,9 +52,9 @@
 
 	sout | "conversion" | endl;
-	a = rational( 3, 4 );
+	a = (Rational){ 3, 4 };
 	sout | widen( a ) | endl;
-	a = rational( 1, 7 );
+	a = (Rational){ 1, 7 };
 	sout | widen( a ) | endl;
-	a = rational( 355, 113 );
+	a = (Rational){ 355, 113 };
 	sout | widen( a ) | endl;
 	sout | narrow( 0.75, 4 ) | endl;
@@ -65,7 +62,5 @@
 	sout | narrow( 3.14159265358979, 256 ) | endl;
 
-	Rational x, y;
-	x = rational( 1, 2 );
-	y = rational( 2 );
+	Rational x = { 1, 2 }, y = { 2 };
 	sout | x - y | endl;
 	sout | x > y | endl;
@@ -73,13 +68,12 @@
 	sout | y | denominator( y, -2 ) | y | endl;
 
-	Rational z;
-	z = rational( 0, 5 );
+	Rational z = { 0, 5 };
 	sout | z | endl;
 
 	sout | x | numerator( x, 0 ) | x | endl;
 
-	x = rational( 1, MAX ) + rational( 1, MAX );
+	x = (Rational){ 1, MAX } + (Rational){ 1, MAX };
 	sout | x | endl;
-	x = rational( 3, MAX ) + rational( 2, MAX );
+	x = (Rational){ 3, MAX } + (Rational){ 2, MAX };
 	sout | x | endl;
 
Index: src/examples/vector_int.c
===================================================================
--- src/examples/vector_int.c	(revision 3e8fb3b1d54a811db409b242954833d6e4e067eb)
+++ src/examples/vector_int.c	(revision 102b0cd092c7b315f62202d82951bd117f096a09)
@@ -5,10 +5,10 @@
 // file "LICENCE" distributed with Cforall.
 //
-// vector_int.c -- 
+// vector_int.c --
 //
 // Author           : Richard C. Bilson
 // Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:38:05 2015
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Apr 27 17:27:12 2016
 // Update Count     : 3
 //
@@ -22,18 +22,25 @@
 #define DEFAULT_CAPACITY 20
 
-vector_int vector_int_allocate() {
-	return vector_int_allocate( DEFAULT_CAPACITY );
+void ?{}( vector_int * vec ) {
+	vec { DEFAULT_CAPACITY };
 }
 
-vector_int vector_int_allocate( int reserve ) {
-	vector_int new_vector;
-	new_vector.last = -1;
-	new_vector.capacity = reserve;
-	new_vector.data = malloc( sizeof( int ) * reserve );
-	return new_vector;
+void ?{}( vector_int * vec, int reserve ) {
+	vec->last = -1;
+	vec->capacity = reserve;
+	vec->data = malloc( sizeof( int ) * reserve );
 }
 
-void vector_int_deallocate( vector_int vec ) {
-	free( vec.data );
+void ?{}( vector_int * vec, vector_int other ) {
+	vec->last = other.last;
+	vec->capacity = other.capacity;
+	vec->data = malloc( sizeof( int ) * other.capacity );
+	for (int i = 0; i < vec->last; i++) {
+		vec->data[i] = other.data[i];
+	}
+}
+
+void ^?{}( vector_int * vec ) {
+	free( vec->data );
 }
 
@@ -56,10 +63,10 @@
 // implement bounded_array
 
-lvalue int ?[?]( vector_int vec, int index ) {
-	return vec.data[ index ];
+lvalue int ?[?]( vector_int * vec, int index ) {
+	return vec->data[ index ];
 }
 
-int last( vector_int vec ) {
-	return vec.last;
+int last( vector_int * vec ) {
+	return vec->last;
 }
 
Index: src/examples/vector_int.h
===================================================================
--- src/examples/vector_int.h	(revision 3e8fb3b1d54a811db409b242954833d6e4e067eb)
+++ src/examples/vector_int.h	(revision 102b0cd092c7b315f62202d82951bd117f096a09)
@@ -5,10 +5,10 @@
 // file "LICENCE" distributed with Cforall.
 //
-// vector_int.h -- 
+// vector_int.h --
 //
 // Author           : Richard C. Bilson
 // Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:39:05 2015
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Apr 27 17:26:59 2016
 // Update Count     : 2
 //
@@ -25,7 +25,8 @@
 } vector_int;
 
-vector_int vector_int_allocate();						// allocate vector with default capacity
-vector_int vector_int_allocate( int reserve );			// allocate vector with specified capacity
-void vector_int_deallocate( vector_int );				// deallocate vector's storage
+void ?{}( vector_int * );								// allocate vector with default capacity
+void ?{}( vector_int *, int reserve );          // allocate vector with specified capacity
+void ?{}( vector_int * vec, vector_int other ); // copy constructor
+void ^?{}( vector_int * );								// deallocate vector's storage
 
 void reserve( vector_int *vec, int reserve );			// reserve more capacity
@@ -34,6 +35,6 @@
 // implement bounded_array
 
-lvalue int ?[?]( vector_int vec, int index );			// access to arbitrary element (does not resize)
-int last( vector_int vec );								// return last element
+lvalue int ?[?]( vector_int * vec, int index );			// access to arbitrary element (does not resize)
+int last( vector_int * vec );								// return last element
 
 #endif // VECTOR_INT_H
Index: src/examples/vector_test.c
===================================================================
--- src/examples/vector_test.c	(revision 3e8fb3b1d54a811db409b242954833d6e4e067eb)
+++ src/examples/vector_test.c	(revision 102b0cd092c7b315f62202d82951bd117f096a09)
@@ -5,10 +5,10 @@
 // file "LICENCE" distributed with Cforall.
 //
-// vector_test.c -- 
+// vector_test.c --
 //
 // Author           : Richard C. Bilson
 // Created On       : Wed May 27 17:56:53 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Feb 17 12:23:55 2016
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Apr 27 17:31:27 2016
 // Update Count     : 18
 //
@@ -20,5 +20,5 @@
 
 int main( void ) {
-	vector_int vec = vector_int_allocate();
+	vector_int vec;
 
 	// read in numbers until EOF or error
@@ -34,9 +34,9 @@
 
 	sout | "Array elements:" | endl;
-	write( begin( vec ), end( vec ), sout );
+	write( begin( &vec ), end( &vec ), sout );
 	sout | endl;
 
 	sout | "Array elements reversed:" | endl;
-	write_reverse( begin( vec ), end( vec ), sout );
+	write_reverse( begin( &vec ), end( &vec ), sout );
 	sout | endl;
 }
