Index: tests/concurrency/futures/.expect/multi.txt
===================================================================
--- tests/concurrency/futures/.expect/multi.txt	(revision b5749f9f229723263933a2bb054ee2c4e6d2d4e5)
+++ 	(revision )
@@ -1,2 +1,0 @@
-start
-done
Index: tests/concurrency/futures/.expect/multi.txt.off
===================================================================
--- tests/concurrency/futures/.expect/multi.txt.off	(revision 9c8afc70c6dc1fa03a353d2b14e83cce3a95909e)
+++ tests/concurrency/futures/.expect/multi.txt.off	(revision 9c8afc70c6dc1fa03a353d2b14e83cce3a95909e)
@@ -0,0 +1,2 @@
+start
+done
Index: tests/concurrency/futures/multi.cfa
===================================================================
--- tests/concurrency/futures/multi.cfa	(revision b5749f9f229723263933a2bb054ee2c4e6d2d4e5)
+++ tests/concurrency/futures/multi.cfa	(revision 9c8afc70c6dc1fa03a353d2b14e83cce3a95909e)
@@ -1,2 +1,4 @@
+// DEPRECATED future type multi_future. Eventually remove this test.
+
 #include <thread.hfa>
 #include <future.hfa>
Index: tests/concurrency/futures/typed.cfa
===================================================================
--- tests/concurrency/futures/typed.cfa	(revision b5749f9f229723263933a2bb054ee2c4e6d2d4e5)
+++ tests/concurrency/futures/typed.cfa	(revision 9c8afc70c6dc1fa03a353d2b14e83cce3a95909e)
@@ -8,31 +8,31 @@
 };
 
-void ?{}( Server & this ) {
-	this.cnt = 0;
-	for(i; NFUTURES) {
-		this.requests[i] = 0p;
+void ?{}( Server & server ) with( server ) {
+	cnt = 0;
+	for ( i; NFUTURES ) {
+		requests[i] = 0p;
 	}
 }
 
-void ^?{}( Server & mutex this ) {
-	assert(this.cnt == 0);
-	for(i; NFUTURES) {
-		this.requests[i] = 0p;
+void ^?{}( Server & mutex server ) with( server )  {
+	assert( cnt == 0 );
+	for ( i; NFUTURES ) {
+		requests[i] = 0p;
 	}
 }
 
-void process( Server & this, int i ) {
-	if( this.requests[i] == 0p ) return;
-	single_future(int) * f = this.requests[i];
-	this.requests[i] = 0p;
-	this.cnt--;
-	fulfil( *f , i);
+void process( Server & server, int i ) with( server )  {
+  if ( requests[i] == 0p ) return;
+	single_future(int) * f = requests[i];
+	requests[i] = 0p;
+	cnt--;
+	(*f)( i );											// fulfil
 }
 
-void call( Server & mutex this, single_future(int) & f ) {
-	for(i; NFUTURES) {
-		if( this.requests[i] == 0p ) {
-			this.requests[i] = &f;
-			this.cnt++;
+void call( Server & mutex server, single_future(int) & f ) with( server ) {
+	for ( i; NFUTURES ) {
+		if ( requests[i] == 0p ) {
+			requests[i] = &f;
+			cnt++;
 			return;
 		}
@@ -41,19 +41,18 @@
 }
 
-void main( Server & this ) {
+void main( Server & server ) {
 	unsigned i = 0;
-	for() {
-		waitfor( ^?{} : this ) {
+	for () {
+		waitfor ( ^?{} : server ) {
 			break;
-		}
-		or when( this.cnt < NFUTURES ) waitfor( call: this ) {}
+		} or when( server.cnt < NFUTURES ) waitfor( call : server ) {}
 		or else {
-			process( this, i % NFUTURES );
+			process( server, i % NFUTURES );
 			i++;
 		}
 	}
 
-	for(i; NFUTURES) {
-		process( this, i );
+	for ( i; NFUTURES ) {
+		process( server, i );
 	}
 }
@@ -62,19 +61,19 @@
 thread Worker {};
 
-void thrash(void) {
+void thrash() {
 	volatile int locals[250];
-	for(i; 250) {
+	for ( i; 250 ) {
 		locals[i] = 0xdeadbeef;
 	}
 }
 
-void work(void) {
+void work() {
 	single_future(int) mine;
 	call( *the_server, mine );
-	wait( mine );
+	mine();												// get
 }
 
 void main( Worker & ) {
-	for(150) {
+	for ( 150 ) {
 		thrash();
 		work();
@@ -84,5 +83,5 @@
 
 int main() {
-	printf( "start\n" );				// non-empty .expect file
+	printf( "start\n" );								// non-empty .expect file
 	processor procs[2];
 	{
@@ -93,5 +92,4 @@
 		}
 	}
-	printf( "done\n" );				// non-empty .expect file
-
+	printf( "done\n" );									// non-empty .expect file
 }
