Index: tests/zombies/Rank2.c
===================================================================
--- tests/zombies/Rank2.c	(revision 87b93323c11d412259391b6741a7bc4dcad8981e)
+++ tests/zombies/Rank2.c	(revision 506d4f06dfdf2ab818d72aeb10ba637131dab60a)
@@ -1,4 +1,4 @@
-int ?=?( int *, int );
-forall(dtype DT) DT * ?=?( DT **, DT * );
+int ?=?( int &, int );
+forall(dtype DT) DT * ?=?( DT *&, DT * );
 
 void a() {
@@ -11,6 +11,6 @@
 	void h( int *null );
 	forall( otype T ) T id( T );
-	forall( dtype T ) T *0;
-	int 0;
+//	forall( dtype T ) T *0;
+//	int 0;
 	h( id( id( id( 0 ) ) ) );
 }
Index: tests/zombies/Tuple.c
===================================================================
--- tests/zombies/Tuple.c	(revision 87b93323c11d412259391b6741a7bc4dcad8981e)
+++ tests/zombies/Tuple.c	(revision 506d4f06dfdf2ab818d72aeb10ba637131dab60a)
@@ -46,5 +46,5 @@
 	[ 3, 5 ];
 	[ a, b ] = 3;
-//	[ a, b ] = [ 4.6 ];
+	[ a, b ] = [ 4.6 ];
 	[ a, b ] = 4.6;
 	[ a, b ] = [ c, d ] = [ 3, 5 ];
@@ -59,5 +59,5 @@
 	[ a, b ] = t1 = [ c, d ];
 	[ a, b ] = t1 = t2 = [ c, d ];
-//	t1 = [ 3, 4 ] = [ 3, 4 ] = t1 = [ 3, 4 ];
+	t1 = [ 3, 4 ] = [ 3, 4 ] = t1 = [ 3, 4 ];
 
 	s.[ f1, i.[ f2, f3 ], f4 ] = [ 11, 12, 13, 3.14159 ];
@@ -65,5 +65,5 @@
 //	[ a, , b, ] = h( 3, 3, 0, "abc" );			/* ignore some results */
 	sp->[ f4, f1 ] = sp->[ f1, f4 ];
-	printf( "expecting 3, 17, 23, 4; got %d, %d, %d, %d\n", s.[ f4, i.[ f3, f2 ], f1 ] );
+	printf( "expecting 3, 17, 23, 4; got %g, %d, %d, %d\n", s.[ f4, i.[ f3, f2 ], f1 ] );
 	rc = 0;
 }
Index: tests/zombies/abstype.c
===================================================================
--- tests/zombies/abstype.c	(revision 87b93323c11d412259391b6741a7bc4dcad8981e)
+++ tests/zombies/abstype.c	(revision 506d4f06dfdf2ab818d72aeb10ba637131dab60a)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jun 14 14:27:48 2016
-// Update Count     : 9
+// Last Modified On : Wed Sep 30 13:55:47 2020
+// Update Count     : 10
 //
 
@@ -21,5 +21,5 @@
 }
 
-forall( otype T ) lvalue T *?( T * );
+forall( otype T ) T *?( T * );
 int ?++( int * );
 int ?=?( int *, int );
Index: tests/zombies/constructors.c
===================================================================
--- tests/zombies/constructors.c	(revision 87b93323c11d412259391b6741a7bc4dcad8981e)
+++ tests/zombies/constructors.c	(revision 506d4f06dfdf2ab818d72aeb10ba637131dab60a)
@@ -1,40 +1,48 @@
-int fred() {
+#include <fstream.hfa>
+#include <stdlib.hfa>
+
+int main() {
     // initialize basic structure
     struct S {
 	int i, j, k;
     };
-    void ?{}( S *s ) { s->i = 1, s->k = 2; }		// default constructor
-    void ?{}( S *s, int i, int k ) { s->i = i, s->k = k; } // 2 parameter constructor
-    void ?{}( S *s, S c ) { *s = c; }			// copy constructor
-    void ^?{}( S *s ) { s->i = 0, s->k = 0; }		// default destructor
-    void ^?{}( S *s, int i ) { s->i = i, s->k = i; }	// 1 parameter destructor
+    void ?{}( S & s ) { s.i = 1, s.k = 2; }		// default constructor
+    void ?{}( S & s, int i, int k ) { s.i = i, s.k = k; } // 2 parameter constructor
+    void ?{}( S & s, S c ) { /* s @= c */ s.[i,j,k] = c.[i,j,k]; } // copy constructor
+    void ^?{}( S & s ) { s.i = 0, s.k = 0; }		// default destructor
+    void ^?{}( S & s, int i ) { s.i = i, s.k = i; }	// 1 parameter destructor
     {
-	S s1;			// default constructor
-	S s2 = { 3, 7 };	// 2 parameter constructor
-	S s3 @= { .k:3, .i:7 };	// 2 parameter C initialization
-	?{}( &s3, 2, 5 );	// explicit 2 parameter constructor
-	^?{}( &s1 );		// explicit call to default destructor
+	S s1;						// default constructor
+	S s2 = { 3, 7 };				// 2 parameter constructor
+	S s3 @= { .k:3, .i:7 };				// 2 parameter C initialization
+	?{}( s3, 2, 5 );				// explicit 2 parameter constructor
+	^?{}( s1 );					// explicit call to default destructor
     } // implicit call to default destructor for s2, explicit call s1, no call for s3
-    S s4 @= {};			// no default construction
-    (&s4){ 2, 5 };		// explicit 2 parameter constructor
-    ^s4{ 3 };			// explicit call to 1 parameter destructor
+    S s4 @= {};						// no default construction
+    (s4){ 2, 5 };					// explicit 2 parameter constructor
+    ^s4{ 3 };						// explicit call to 1 parameter destructor
 
     // initialize pointer to a basic structure
 
-    void ?{}( S **s ) { *s = malloc(); (*s)->i = 1, (*s)->k = 2; } // default constructor
-    void ?{}( S **s, int i, int k ) { *s = malloc(); (*s)->i = i, (*s)->k = k; } // 2 parameter constructor
-    void ^?{}( S **s ) { (*s)->i = 0, (*s)->k = 0; free( *s ); *s = 0; } // default destructor
+    void ?{}( S *& s ) { s = malloc(); s->i = 1, (*s).k = 2; } // default constructor
+    void ?{}( S *& s, int i, int k ) { s = malloc(); (*s).i = i, (*s).k = k; } // 2 parameter constructor
+    void ^?{}( S *& s ) { (*s).i = 0, (*s).k = 0; free( s ); &s = 0p; } // default destructor
     {
-	S *ps1;			// default constructor
-	S *ps2 = { 3, 7 };	// 2 parameter constructor
-	S *ps3 @= 0;		// C initialization
-	S *ps4 @= {};		// no default construction
+	S * ps1;					// default constructor
+	S * ps2 = { 3, 7 };				// 2 parameter constructor
+	sout | ps1 | ps2;
+
+	S * ps3 @= 0p;					// C initialization
+	S * ps4 @= { 3 };				// no default construction
+	sout | ps3 | ps4;
+
+	?{}( ps3, 2, 5 );				// explicit 2 parameter constructor
+	(ps4){ 2, 5 };					// explicit 2 parameter constructor
+	sout | ps3 | ps4;
+
+	^?{}( ps3 );					// explicit call to default destructor
+	^ps4{};						// explicit call to default destructor
+	sout | ps3 | ps4;
     } // implicit call to default destructor for ps2 and ps1, checks ordering of explicit destructor calls
-
-    ?{}( &ps3, 2, 5 );		// explicit 2 parameter constructor
-    (&ps4){ 2, 5 };		// explicit 2 parameter constructor
-    
-    ^?{}( &ps3 );		// explicit call to default destructor
-    ^ps4{};			// explicit call to default destructor
 
     // initialize complex structure
@@ -44,17 +52,18 @@
     };
 
-    void ?{}( T *t ) {}					// default constructor => implicitly call constructor for field s
-    void ?{}( T *t, int i, int k ) { (&t->s){ i, k }; }	// 2 parameter constructor => explicitly call constructor for field s
-    void ?{}( T *t, S c ) { (&t->s){ c }; }		// 1 parameter constructor => explicitly call copy constructor for field s
-    void ^?{}( T *s, int i ) {}				// destructor => implicitly call destructor for field s
+    void ?{}( T & t ) {}	// default constructor => implicitly call constructor for field s
+    void ?{}( T & t, int i, int k ) { (t.s){ i, k }; } // 2 parameter constructor => explicitly call constructor for field s
+    void ?{}( T & t, S c ) { (t.s){ c }; }// 1 parameter constructor => explicitly call copy constructor for field s
+    void ^?{}( T & s ) {}	// destructor => implicitly call destructor for field s
+    void ^?{}( T & s, int i ) {}// destructor => implicitly call destructor for field s
     {
-	S s;			// default constructor
-	T t1;			// default constructor
-	T t2 = { s };		// 1 parameter constructor
-	^?{}( &t1 );		// explicit call to default destructor => implicit call to t1.s's destructor
+	S s;						// default constructor
+	T t1;						// default constructor
+	T t2 = { s };					// 1 parameter constructor
+	^?{}( t1, 3 );					// explicit call to default destructor => implicit call to t1.s's destructor
+	T t3;						// default constructor
+	T t4 @= { { 1, 3 } };				// C initialization
+	(t4){ 2, 5 };					// explicit 2 parameter constructor
     } // implicit call to default destructor for t2 and implicit call for s;
-    T t3;			// default constructor
-    T t4 @= { { 1, 3 } };	// C initialization
-    (&t4){ 2, 5 };		// explicit 2 parameter constructor
 
     T *pt = malloc(){ 3, 4 };	// common usage
Index: tests/zombies/includes.c
===================================================================
--- tests/zombies/includes.c	(revision 87b93323c11d412259391b6741a7bc4dcad8981e)
+++ tests/zombies/includes.c	(revision 506d4f06dfdf2ab818d72aeb10ba637131dab60a)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Nov 15 23:06:24 2017
-// Update Count     : 597
+// Last Modified On : Wed Sep 30 13:59:18 2020
+// Update Count     : 598
 //
 
@@ -24,45 +24,46 @@
 #if 1
 #define _GNU_SOURCE
-#include <a.out.h>
-#include <aio.h>
-#include <aliases.h>
-#include <alloca.h>
-#include <ansidecl.h>
-#include <ar.h>
-#include <argp.h>
-#include <argz.h>
-#include <assert.h>
-//#include <bfd.h>
-// #include <bfdlink.h>				// keyword with
-#include <byteswap.h>
-#include <bzlib.h>
-#include <cblas.h>
-#include <cblas_f77.h>
-#include <complex.h>
-#include <com_err.h>
-#include <cpio.h>
-#include <crypt.h>
-#include <ctype.h>
-#include <curses.h>
-#include <dialog.h>
-#include <dirent.h>
-#include <dis-asm.h>
-#include <dlfcn.h>
-#include <dlg_colors.h>
-#include <dlg_config.h>
-#include <dlg_keys.h>
-#include <elf.h>
-#include <endian.h>
-#include <envz.h>
-#include <err.h>
-#include <errno.h>
-#include <error.h>
-#include <eti.h>
-#include <evdns.h>
-#include <event.h>
+// #include <a.out.h>
+// #include <aio.h>
+// #include <aliases.h>
+// #include <alloca.h>
+// #include <ansidecl.h>
+// #include <ar.h>
+// #include <argp.h>
+// #include <argz.h>
+// #include <assert.h>
+// #include <bfd.h>
+// #include <bfdlink.h>									// keyword with
+// #include <byteswap.h>
+// #include <bzlib.h>
+// #include <cblas.h>
+// #include <cblas_f77.h>
+// #include <complex.h>
+// #include <com_err.h>
+// #include <cpio.h>
+
+// #include <crypt.h>
+// #include <ctype.h>
+// #include <curses.h>
+// #include <dialog.h>
+// #include <dirent.h>
+// #include <dis-asm.h>
+// #include <dlfcn.h>
+// #include <dlg_colors.h>
+// #include <dlg_config.h>
+// #include <dlg_keys.h>
+// #include <elf.h>
+// #include <endian.h>
+// #include <envz.h>
+// #include <err.h>
+// #include <errno.h>
+// #include <error.h>
+// #include <eti.h>
+// #include <evdns.h>
+// #include <event.h>
 
 // #include <evhttp.h>
 // #include <sys/queue.h>
-// #include <evrpc.h>					// evrpc.h depends on sys/queue.h
+// #include <evrpc.h>										// evrpc.h depends on sys/queue.h
 // #include <evutil.h>
 // #include <execinfo.h>
@@ -80,4 +81,5 @@
 // #include <fts.h>
 // #include <ftw.h>
+
 // #include <gconv.h>
 // #include <getopt.h>
@@ -89,5 +91,5 @@
 // #include <gshadow.h>
 // #include <gssapi.h>
-// #include <hwloc.h>					// keyword thread (setjmp)
+#include <hwloc.h>										// keyword thread (setjmp)
 // #include <iconv.h>
 // #include <idna.h>
