Index: benchmark/io/http/main.cfa
===================================================================
--- benchmark/io/http/main.cfa	(revision d11d6ebdac4eb4d61f52ccf8176d113768ef6216)
+++ benchmark/io/http/main.cfa	(revision 8e3034da48f487fb3b3a4090d3b5ea7d5cfbed78)
@@ -126,4 +126,8 @@
 						workers[i].pipe[0] = fds[pipe_off + (i * 2) + 0];
 						workers[i].pipe[1] = fds[pipe_off + (i * 2) + 1];
+						workers[i].sockfd  = server_fd;
+						workers[i].addr    = (struct sockaddr *)&address;
+						workers[i].addrlen = (socklen_t*)&addrlen;
+						workers[i].flags   = 0;
 					}
 					unpark( workers[i] __cfaabi_dbg_ctx2 );
@@ -131,6 +135,4 @@
 				printf("%d workers started on %d processors\n", options.clopts.nworkers, options.clopts.nprocs);
 				{
-					Acceptor acceptor = { server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen, 0 };
-
 					char buffer[128];
 					while(!feof(stdin)) {
@@ -139,10 +141,4 @@
 
 					printf("Shutting Down\n");
-				}
-				printf("Acceptor Closed\n");
-
-				// Clean-up the workers
-				for(options.clopts.nworkers) {
-					put( wait_connect, -1 );
 				}
 			}
Index: benchmark/io/http/worker.cfa
===================================================================
--- benchmark/io/http/worker.cfa	(revision d11d6ebdac4eb4d61f52ccf8176d113768ef6216)
+++ benchmark/io/http/worker.cfa	(revision 8e3034da48f487fb3b3a4090d3b5ea7d5cfbed78)
@@ -28,6 +28,9 @@
 	CONNECTION:
 	for() {
-		int fd = take(wait_connect);
-		if (fd < 0) break;
+		int fd = cfa_accept4( this.[sockfd, addr, addrlen, flags], 0, -1`s, 0p, 0p );
+		if(fd < 0) {
+			if( errno == ECONNABORTED ) break;
+			abort( "accept error: (%d) %s\n", (int)errno, strerror(errno) );
+		}
 
 		printf("New connection %d, waiting for requests\n", fd);
@@ -82,26 +85,2 @@
 	}
 }
-
-//=============================================================================================
-// Acceptor Thread
-//=============================================================================================
-void ?{}( Acceptor & this, int sockfd, struct sockaddr * addr, socklen_t * addrlen, int flags ) {
-	((thread&)this){ "Acceptor Thread", *options.clopts.instance };
-	this.sockfd  = sockfd;
-	this.addr    = addr;
-	this.addrlen = addrlen;
-	this.flags   = flags;
-}
-
-void main( Acceptor & this ) {
-	for() {
-		int ret = cfa_accept4( this.[sockfd, addr, addrlen, flags], 0, -1`s, 0p, 0p );
-		if(ret < 0) {
-			if( errno == ECONNABORTED ) break;
-			abort( "accept error: (%d) %s\n", (int)errno, strerror(errno) );
-		}
-
-		printf("New connection accepted\n");
-		put( wait_connect, ret );
-	}
-}
Index: benchmark/io/http/worker.hfa
===================================================================
--- benchmark/io/http/worker.hfa	(revision d11d6ebdac4eb4d61f52ccf8176d113768ef6216)
+++ benchmark/io/http/worker.hfa	(revision 8e3034da48f487fb3b3a4090d3b5ea7d5cfbed78)
@@ -17,12 +17,4 @@
 thread Worker {
 	int pipe[2];
-};
-void ?{}( Worker & this );
-void main( Worker & );
-
-//=============================================================================================
-// Acceptor Thread
-//=============================================================================================
-thread Acceptor {
 	int sockfd;
 	struct sockaddr * addr;
@@ -30,5 +22,4 @@
 	int flags;
 };
-
-void ?{}( Acceptor & this, int sockfd, struct sockaddr * addr, socklen_t * addrlen, int flags );
-void main( Acceptor & this );
+void ?{}( Worker & this);
+void main( Worker & );
