Index: trunk/psLib/test/sysUtils/builddir/atst_psAbort_01.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/atst_psAbort_01.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/atst_psAbort_01.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/atst_psAbort_02.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/atst_psAbort_02.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/atst_psAbort_02.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/atst_psAbort_03.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/atst_psAbort_03.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/atst_psAbort_03.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psError.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psError.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psError.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psHash00.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psHash00.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psHash00.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psHash01.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psHash01.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psHash01.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psHash02.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psHash02.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psHash02.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psHash03.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psHash03.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psHash03.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psHash04.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psHash04.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psHash04.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psLogMsg00.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psLogMsg00.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psLogMsg00.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psLogMsg01.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psLogMsg01.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psLogMsg01.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psLogMsg02.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psLogMsg02.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psLogMsg02.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psLogMsg03.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psLogMsg03.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psLogMsg03.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psMemory.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psMemory.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psMemory.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psStringCopy.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psStringCopy.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psStringCopy.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psTrace00.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psTrace00.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psTrace00.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psTrace01.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psTrace01.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psTrace01.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psTrace02.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psTrace02.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psTrace02.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psTrace03.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psTrace03.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psTrace03.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/builddir/tst_psTrace04.d
===================================================================
--- trunk/psLib/test/sysUtils/builddir/tst_psTrace04.d	(revision 1037)
+++ trunk/psLib/test/sysUtils/builddir/tst_psTrace04.d	(revision 1073)
@@ -3,6 +3,7 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h ../../include/psImage.h \
+  ../../include/psVector.h ../../include/psHash.h \
+  ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
-  ../../include/psMatrix.h ../../include/psFFT.h \
-  ../../include/psImageIO.h ../../include/psTest.h
+  ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
+  ../../include/psFFT.h ../../include/psImageIO.h ../../include/psTest.h
Index: trunk/psLib/test/sysUtils/tst_psHash00.c
===================================================================
--- trunk/psLib/test/sysUtils/tst_psHash00.c	(revision 1037)
+++ trunk/psLib/test/sysUtils/tst_psHash00.c	(revision 1073)
@@ -53,7 +53,7 @@
                 testStatus);
 
-    psHashFree(myHashTable, NULL);
+    psFree(myHashTable);
 
-    memLeaks = psMemCheckLeaks(currentId,NULL,NULL);
+    memLeaks = psMemCheckLeaks(currentId,NULL,stderr);
     if (0 != memLeaks) {
         psAbort(__func__,"Memory Leaks! (%d leaks)", memLeaks);
Index: trunk/psLib/test/sysUtils/tst_psHash01.c
===================================================================
--- trunk/psLib/test/sysUtils/tst_psHash01.c	(revision 1037)
+++ trunk/psLib/test/sysUtils/tst_psHash01.c	(revision 1073)
@@ -14,7 +14,11 @@
 }
 ID;
+
+static void IdFree(ID *id);
+
 static ID *IdAlloc(const char *name)
 {
     ID *id = psAlloc(sizeof(ID));
+    p_psMemSetDeallocator(id,(psFreeFcn)IdFree);
     id->name = psStringCopy(name);
 
@@ -26,5 +30,4 @@
     imGlobal++;
     psFree(id->name);
-    psFree(id);
 }
 
@@ -34,4 +37,5 @@
     int testStatus      = true;
     int currentId = psMemGetId();
+    ID* id = NULL;
     int memLeaks        = 0;
 
@@ -41,13 +45,17 @@
 
     myHashTable = psHashAlloc(NUM_HASH_TABLE_BUCKETS);
-    psHashInsert(myHashTable, "ENTRY00", IdAlloc("IDA"),
-                 (void (*)(void *))IdFree);
-    psHashInsert(myHashTable, "ENTRY01", IdAlloc("IDB"),
-                 (void (*)(void *))IdFree);
-    psHashInsert(myHashTable, "ENTRY02", IdAlloc("IDC"),
-                 (void (*)(void *))IdFree);
-    psHashInsert(myHashTable, "ENTRY03", IdAlloc("IDD"),
-                 (void (*)(void *))IdFree);
-    psHashFree(myHashTable, (void (*)(void *))IdFree);
+    id = IdAlloc("IDA");
+    psHashInsert(myHashTable, "ENTRY00", id);
+    psFree(id);
+    id = IdAlloc("IDB");
+    psHashInsert(myHashTable, "ENTRY01", id);
+    psFree(id);
+    id = IdAlloc("IDC");
+    psHashInsert(myHashTable, "ENTRY02", id);
+    psFree(id);
+    id = IdAlloc("IDD");
+    psHashInsert(myHashTable, "ENTRY03", id);
+    psFree(id);
+    psFree(myHashTable);
 
     if (imGlobal != 4) {
Index: trunk/psLib/test/sysUtils/tst_psHash02.c
===================================================================
--- trunk/psLib/test/sysUtils/tst_psHash02.c	(revision 1037)
+++ trunk/psLib/test/sysUtils/tst_psHash02.c	(revision 1073)
@@ -19,7 +19,10 @@
 }
 ID;
+static void IdFree(ID *id);
+
 static ID *IdAlloc(const char *name)
 {
     ID *id = psAlloc(sizeof(ID));
+    p_psMemSetDeallocator(id,(psFreeFcn)IdFree);
     id->name = psStringCopy(name);
 
@@ -31,5 +34,4 @@
     imGlobal++;
     psFree(id->name);
-    psFree(id);
 }
 
@@ -52,6 +54,7 @@
     i = 0;
     while (myKeys[i] != NULL) {
-        psHashInsert(myHashTable, myKeys[i], IdAlloc(myData[i]),
-                     (void (*)(void *))IdFree);
+        id = IdAlloc(myData[i]);
+        psHashInsert(myHashTable, myKeys[i], id);
+        psFree(id);
         i++;
     }
@@ -78,5 +81,5 @@
 
     //    psHashFree(myHashTable, NULL);
-    psHashFree(myHashTable, (void (*)(void *))IdFree);
+    psFree(myHashTable);
 
     memLeaks = psMemCheckLeaks(currentId,NULL,NULL);
Index: trunk/psLib/test/sysUtils/tst_psHash03.c
===================================================================
--- trunk/psLib/test/sysUtils/tst_psHash03.c	(revision 1037)
+++ trunk/psLib/test/sysUtils/tst_psHash03.c	(revision 1073)
@@ -19,4 +19,5 @@
 }
 ID;
+static void IdFree(ID *id);
 
 // NOTE: This is my own little routine I used in debugging a memory
@@ -48,4 +49,5 @@
 
     id = psAlloc(sizeof(ID));
+    p_psMemSetDeallocator(id,(psFreeFcn)IdFree);
 
     id->name = psStringCopy(name);
@@ -58,5 +60,4 @@
     imGlobal++;
     psFree(id->name);
-    psFree(id);
 }
 
@@ -82,6 +83,5 @@
     i = 0;
     while (myKeys[i] != NULL) {
-        psHashInsert(myHashTable, myKeys[i], IdAlloc(myData[i]),
-                     (void (*)(void *))IdFree);
+        psHashInsert(myHashTable, myKeys[i], IdAlloc(myData[i]));
         i++;
     }
@@ -101,9 +101,9 @@
     i = 0;
     while (myKeys[i] != NULL) {
-        id = psHashRemove(myHashTable, myKeys[i], (void (*)(void *))IdFree);
+        id = psHashRemove(myHashTable, myKeys[i]);
         // The psHashRemove() procedure removes the entry from the hash
         // table, but does not delete the data.  The following is necessary
         // to delete the data as well (which is returned from the call).
-        IdFree(id);
+        psFree(id);
         id = psHashLookup(myHashTable, myKeys[i]);
         if (id != NULL) {
@@ -119,6 +119,6 @@
                 testStatus);
 
-    psHashFree(myHashTable, (void (*)(void *))IdFree);
-    memLeaks = psMemCheckLeaks(currentId,NULL,NULL);
+    psFree(myHashTable);
+    memLeaks = psMemCheckLeaks(currentId,NULL,stdout);
     if (0 != memLeaks) {
         psAbort(__func__,"Memory Leaks! (%d leaks)", memLeaks);
Index: trunk/psLib/test/sysUtils/tst_psHash04.c
===================================================================
--- trunk/psLib/test/sysUtils/tst_psHash04.c	(revision 1037)
+++ trunk/psLib/test/sysUtils/tst_psHash04.c	(revision 1073)
@@ -14,7 +14,11 @@
 }
 ID;
+static void IdFree(ID *id);
+
 static ID *IdAlloc(const char *name)
 {
     ID *id = psAlloc(sizeof(ID));
+    p_psMemSetDeallocator(id,(psFreeFcn)IdFree);
+
     id->name = psStringCopy(name);
 
@@ -26,5 +30,4 @@
     imGlobal++;
     psFree(id->name);
-    psFree(id);
 }
 
@@ -40,4 +43,5 @@
     psList *myLinkList = NULL;
     psListElem *tmp = NULL;
+    ID* id = NULL;
 
     printPositiveTestHeader(stdout,
@@ -48,6 +52,7 @@
     i = 0;
     while (myKeys[i] != NULL) {
-        psHashInsert(myHashTable, myKeys[i], IdAlloc(myData[i]),
-                     (void (*)(void *))IdFree);
+        id = IdAlloc(myData[i]);
+        psHashInsert(myHashTable, myKeys[i], id);
+        psFree(id);
         i++;
     }
@@ -59,5 +64,5 @@
     }
 
-    psListFree(myLinkList, NULL);
+    psFree(myLinkList);
 
     printFooter(stdout,
@@ -66,7 +71,7 @@
                 testStatus);
 
-    psHashFree(myHashTable, (void (*)(void *))IdFree);
+    psFree(myHashTable);
 
-    memLeaks = psMemCheckLeaks(currentId,NULL,NULL);
+    memLeaks = psMemCheckLeaks(currentId,NULL,stderr);
     if (0 != memLeaks) {
         psAbort(__func__,"Memory Leaks! (%d leaks)", memLeaks);
Index: trunk/psLib/test/sysUtils/verified/tst_psMemory.stderr
===================================================================
--- trunk/psLib/test/sysUtils/verified/tst_psMemory.stderr	(revision 1037)
+++ trunk/psLib/test/sysUtils/verified/tst_psMemory.stderr	(revision 1073)
@@ -81,5 +81,5 @@
  <DATE> <TIME> <HOST> |I|TPmemCorruption|psMemCheckCorruption should output an error message and memProblemCallback callback should be called.
  <DATE> <TIME> <HOST> |E|psMemCheckCorru|psMemCheckCorruption: memory block 1 is corrupted (buffer underflow)
- <DATE> <TIME> <HOST> |I|memProblemCallb|memory callback called for id 1 (psMemCheckCorruption:228).
+ <DATE> <TIME> <HOST> |I|memProblemCallb|memory callback called for id 1 (psMemCheckCorruption:226).
 
 ---> TESTPOINT PASSED (psMemory{455-TPmemCorruption} | tst_psMemory.c)
