Index: benchmark/readyQ/yield.cfa
===================================================================
--- benchmark/readyQ/yield.cfa	(revision 566fde0b28f01b803e3c2de9c36338aaa80bdeff)
+++ benchmark/readyQ/yield.cfa	(revision cb8560391e7b57b539b8deb6a5eb90a63d7a5bcf)
@@ -43,68 +43,25 @@
 
 int main(int argc, char * argv[]) {
-	double duration = 5;
-	int nprocs = 1;
-	int nthreads = 1;
-	bool silent = false;
-	bool procstats = false;
+	BENCH_DECL
 
 	for(;;) {
 		static struct option options[] = {
-			{"duration",  required_argument, 0, 'd'},
-			{"nprocs",    required_argument, 0, 'p'},
-			{"nthreads",  required_argument, 0, 't'},
-			{"nostats",   no_argument      , 0, 'S'},
-			{"procstat",  no_argument      , 0, 'P'},
+			BENCH_OPT_LONG
 			{0, 0, 0, 0}
 		};
 
 		int idx = 0;
-		int opt = getopt_long(argc, argv, "d:p:t:SP", options, &idx);
+		int opt = getopt_long(argc, argv, BENCH_OPT_SHORT, options, &idx);
 
-		char * arg = optarg ? optarg : "";
-		size_t len = 0;
+		const char * arg = optarg ? optarg : "";
 		char * end;
 		switch(opt) {
 			case -1:
 				goto run;
-			// Numeric Arguments
-			case 'd':
-				duration = strtod(arg, &end);
-				if(*end != '\0') {
-					fprintf(stderr, "Duration must be a valid double, was %s\n", arg);
-					goto usage;
-				}
-				break;
-			case 't':
-				nthreads = strtoul(arg, &end, 10);
-				if(*end != '\0' || nthreads < 1) {
-					fprintf(stderr, "Number of threads must be a positive integer, was %s\n", arg);
-					goto usage;
-				}
-				break;
-			case 'p':
-				nprocs = strtoul(arg, &end, 10);
-				if(*end != '\0' || nprocs < 1) {
-					fprintf(stderr, "Number of processors must be a positive integer, was %s\n", arg);
-					goto usage;
-				}
-				break;
-			case 'S':
-				silent = true;
-				break;
-			case 'P':
-				procstats = true;
-				break;
-			// Other cases
+			BENCH_OPT_CASE
 			default: /* ? */
 				fprintf( stderr, "Unkown option '%c'\n", opt);
 			usage:
-				fprintf( stderr, "Usage: %s [options]\n", argv[0]);
-				fprintf( stderr, "\n" );
-				fprintf( stderr, "  -d, --duration=DURATION  Duration of the experiment, in seconds\n" );
-				fprintf( stderr, "  -t, --nthreads=NTHREADS  Number of kernel threads\n" );
-				fprintf( stderr, "  -q, --nqueues=NQUEUES    Number of queues per threads\n" );
-				fprintf( stderr, "  -S, --nostats            Don't print cluster stats\n" );
-				fprintf( stderr, "  -P, --procstat           Print processor stats" );
+				bench_usage( argv );
 				exit(1);
 		}
@@ -113,22 +70,10 @@
 
 	{
-		printf("Running %d threads on %d processors for %lf seconds\n", nthreads, nprocs, duration);
+		printf("Running %d threads on %d processors for %f seconds\n", nthreads, nprocs, duration);
 
 		Time start, end;
-		BenchCluster cl = { 0 };
-		#if !defined(__CFA_NO_STATISTICS__)
-			if( !silent ) {
-				print_stats_at_exit( cl.self, CFA_STATS_READY_Q );
-			}
-		#endif
+		BenchCluster cl = { 0, CFA_STATS_READY_Q };
 		{
 			BenchProc procs[nprocs];
-			#if !defined(__CFA_NO_STATISTICS__)
-				if( procstats ) {
-					for(i; nprocs) {
-						print_stats_at_exit( procs[i].self, CFA_STATS_READY_Q );
-					}
-				}
-			#endif
 			{
 				Yielder threads[nthreads];
