Index: trunk/psModules/src/config/pmConfigCamera.c
===================================================================
--- trunk/psModules/src/config/pmConfigCamera.c	(revision 15477)
+++ trunk/psModules/src/config/pmConfigCamera.c	(revision 15513)
@@ -464,5 +464,5 @@
     while ((formatsItem = psMetadataGetAndIncrement(formatsIter))) {
         assert(formatsItem->type == PS_DATA_METADATA); // We should have read it by now!
-        psMetadata *format = formatsItem->data.V; // The camera format
+        psMetadata *format = formatsItem->data.md; // The camera format
 
         // Add a new RULE which uniquely describes the mosaicked format.  this is needed so
Index: trunk/psModules/src/config/pmConfigRecipes.c
===================================================================
--- trunk/psModules/src/config/pmConfigRecipes.c	(revision 15477)
+++ trunk/psModules/src/config/pmConfigRecipes.c	(revision 15513)
@@ -5,5 +5,5 @@
 #include <stdio.h>
 #include <string.h>
-#include <strings.h>		/* for strn?casecmp */
+#include <strings.h>            /* for strn?casecmp */
 #include <unistd.h>
 #include <libgen.h>
@@ -33,6 +33,6 @@
         options = psMetadataAlloc ();
         success = psMetadataAddPtr (config->arguments, PS_LIST_TAIL, "OPTIONS",  PS_DATA_METADATA, "", options);
-	assert (success); // type mismatch : OPTIONS already defined but wrong type
-	psFree (options); // drop extra reference
+        assert (success); // type mismatch : OPTIONS already defined but wrong type
+        psFree (options); // drop extra reference
     }
 
@@ -44,6 +44,6 @@
         recipe = psMetadataAlloc();
         success = psMetadataAddPtr(options, PS_LIST_TAIL, recipeName,  PS_DATA_METADATA, "", recipe);
-	assert (success); // type mismatch : OPTIONS already defined but wrong type
-	psFree (recipe);  // drop extra reference
+        assert (success); // type mismatch : OPTIONS already defined but wrong type
+        psFree (recipe);  // drop extra reference
     }
     return recipe;
@@ -67,9 +67,9 @@
     // master recipe files in the site:recipe location when they are built.
     if (config->site && (source & PM_RECIPE_SOURCE_SITE)) {
-	if (!loadRecipeSite(&status, config, config->site)) {
+        if (!loadRecipeSite(&status, config, config->site)) {
             psError(PS_ERR_IO, false, "Failed to read recipes from site config");
-	    return false;
-        } 
-	psTrace ("psModules.config", 3, "read recipes from site config");
+            return false;
+        }
+        psTrace ("psModules.config", 3, "read recipes from site config");
     }
 
@@ -81,11 +81,11 @@
         if (!loadRecipeCamera(&status, config, config->camera)) {
             psError(PS_ERR_IO, false, "Failed to read recipes from camera config");
-	    return false;
-        } 
-	if (status) {
-	    psTrace ("psModules.config", 3, "read recipes from camera config");
-	} else {
-	    psLogMsg ("psModules.config", PS_LOG_DETAIL, "no recipe supplied by camera config");
-	}
+            return false;
+        }
+        if (status) {
+            psTrace ("psModules.config", 3, "read recipes from camera config");
+        } else {
+            psLogMsg ("psModules.config", PS_LOG_DETAIL, "no recipe supplied by camera config");
+        }
     }
 
@@ -94,25 +94,25 @@
         if (!loadRecipeFromArguments(&status, config)) {
             psError(PS_ERR_IO, false, "Failed to read recipes from command-line arguments");
-	    return false;
-        } 
-	if (status) {
-	    psTrace ("psModules.config", 3, "read recipes from command-line arguments");
-	} else {
-	    psLogMsg ("psModules.config", PS_LOG_DETAIL, "no recipe supplied on command-line arguments");
-	}
+            return false;
+        }
+        if (status) {
+            psTrace ("psModules.config", 3, "read recipes from command-line arguments");
+        } else {
+            psLogMsg ("psModules.config", PS_LOG_DETAIL, "no recipe supplied on command-line arguments");
+        }
         if (!loadRecipeSymbols(&status, config)) {
             psError(PS_ERR_IO, false, "Failed to read recipes from symbolic references");
-	    return false;
-        } 
-	if (status) {
-	    psTrace ("psModules.config", 3, "read recipes from symbolic references");
-	} else {
-	    psLogMsg ("psModules.config", PS_LOG_DETAIL, "no recipe supplied by symbolic reference");
-	}
+            return false;
+        }
+        if (status) {
+            psTrace ("psModules.config", 3, "read recipes from symbolic references");
+        } else {
+            psLogMsg ("psModules.config", PS_LOG_DETAIL, "no recipe supplied by symbolic reference");
+        }
         if (!loadRecipeOptions(&status, config)) {
             psError(PS_ERR_IO, false, "Failed to read recipes from symbolic references");
-	    return false;
-        } 
-	if (status) {
+            return false;
+        }
+        if (status) {
             psTrace ("psModules.config", 3, "read recipes from command-line arguments");
         } else {
@@ -135,6 +135,6 @@
         options = psMetadataAlloc();
         success = psMetadataAddPtr(config->arguments, PS_LIST_TAIL, "OPTIONS",  PS_DATA_METADATA, "Command-line options specified with -D", options);
-	assert (success); // type mismatch : OPTIONS already defined but wrong type
-	psFree (options); // drop extra reference
+        assert (success); // type mismatch : OPTIONS already defined but wrong type
+        psFree (options); // drop extra reference
     }
 
@@ -176,6 +176,6 @@
             recipe = psMetadataAlloc();
             success = psMetadataAddPtr(options, PS_LIST_TAIL, recipeName,  PS_DATA_METADATA, "", recipe);
-	    assert (success); // type mismatch : recipe already defined but wrong type
-	    psFree (recipe); // drop extra reference
+            assert (success); // type mismatch : recipe already defined but wrong type
+            psFree (recipe); // drop extra reference
         }
 
@@ -216,5 +216,5 @@
 bool pmConfigLoadRecipeArguments (int *argc, char **argv, pmConfig *config)
 {
-    bool success; 
+    bool success;
 
     psMetadata *recipes = psMetadataLookupMetadata(&success, config->arguments, "RECIPES");
@@ -222,6 +222,6 @@
         recipes = psMetadataAlloc();
         success = psMetadataAddPtr (config->arguments, PS_LIST_TAIL, "RECIPES",  PS_DATA_METADATA, "", recipes);
-	assert (success);
-	psFree (recipes);
+        assert (success);
+        psFree (recipes);
     }
 
@@ -271,6 +271,6 @@
 // Load the recipe files for SITE : REQUIRED
 static bool loadRecipeSite(bool *status,
-			   pmConfig *config, // The configuration into which to read the recipes
-			   psMetadata *source // The source configuration, from which to read the filenames
+                           pmConfig *config, // The configuration into which to read the recipes
+                           psMetadata *source // The source configuration, from which to read the filenames
     )
 {
@@ -300,17 +300,18 @@
         if (fileItem->type != PS_DATA_STRING) {
             psError(PS_ERR_IO, true, "%s in site configuration RECIPES is not of type STR", fileItem->name);
-	    return false;
+            return false;
         }
 
         // Read the recipe file. if we fail on a file, give a warning, but continue
         psMetadata *recipe = NULL;
-        if (!pmConfigFileRead(&recipe, fileItem->data.V, "recipe")) {
-            psError(PS_ERR_IO, false, "Failed to read recipe file %s listed in site configuration\n", (char *)fileItem->data.V);
-	    return false;
+        if (!pmConfigFileRead(&recipe, fileItem->data.str, "recipe")) {
+            psError(PS_ERR_IO, false, "Failed to read recipe file %s listed in site configuration\n",
+                    fileItem->data.str);
+            return false;
         }
 
         // if this named recipe exists, supplement it
-	psMetadataAdd(config->recipes, PS_LIST_TAIL, fileItem->name, PS_DATA_METADATA | PS_META_REPLACE,
-		      fileItem->comment, recipe);
+        psMetadataAdd(config->recipes, PS_LIST_TAIL, fileItem->name, PS_DATA_METADATA | PS_META_REPLACE,
+                      fileItem->comment, recipe);
         psFree(recipe);  // Drop reference
     }
@@ -326,6 +327,6 @@
 // for sourceType == SITE | CAMERA, RECIPES contains a list of files to be read (pmConfigFileRead)
 static bool loadRecipeCamera(bool *status, // status variable
-			     pmConfig *config, // The configuration into which to read the recipes
-			     psMetadata *source // The source configuration, from which to read the filenames
+                             pmConfig *config, // The configuration into which to read the recipes
+                             psMetadata *source // The source configuration, from which to read the filenames
     )
 {
@@ -345,5 +346,5 @@
     psMetadata *recipes = psMetadataLookupMetadata(&success, source, "RECIPES"); // The list of recipes
     if (!recipes) {
-	psTrace ("psModules.config", 3, "RECIPES not found in the camera configuration\n");
+        psTrace ("psModules.config", 3, "RECIPES not found in the camera configuration\n");
         return true;
     }
@@ -355,8 +356,8 @@
     psMetadataItem *fileItem = NULL;    // MD item containing the filename, from recipe iteration
     while ((fileItem = psMetadataGetAndIncrement(recipesIter))) {
-	char *recipeName = fileItem->name;
-	char *recipeFile = fileItem->data.V;
-
-	psTrace("psModules.config", 3, "Supplementing %s from %s within camera configuration.\n", recipeName, recipeFile);
+        char *recipeName = fileItem->name;
+        char *recipeFile = fileItem->data.str;
+
+        psTrace("psModules.config", 3, "Supplementing %s from %s within camera configuration.\n", recipeName, recipeFile);
 
         // type mismatch is a serious error
@@ -368,21 +369,22 @@
         psMetadata *recipe = NULL;
         if (!pmConfigFileRead(&recipe, recipeFile, "recipe")) {
-            psError(PS_ERR_IO, false, "Failed to read recipe file %s listed in camera configuration\n", recipeFile);
-	    return false;
+            psError(PS_ERR_IO, false, "Failed to read recipe file %s listed in camera configuration\n",
+                    recipeFile);
+            return false;
         }
 
         // the named recipe must exist; supplement it
-	psMetadata *current = psMetadataLookupMetadata(NULL, config->recipes, recipeName);
-	if (!current) {
-	    psError(PS_ERR_IO, false, "Failed to find recipe for %s in master recipe list", recipeName);
-	    psFree(recipe);  // Drop reference
-	    return false;
-	}
-
-	if (!psMetadataUpdate(current, recipe)) {
-	    psError(PS_ERR_IO, false, "Failed to update recipe for %s from camera recipe", recipeName);
-	    psFree(recipe);  // Drop reference
-	    return false;
-	}
+        psMetadata *current = psMetadataLookupMetadata(NULL, config->recipes, recipeName);
+        if (!current) {
+            psError(PS_ERR_IO, false, "Failed to find recipe for %s in master recipe list", recipeName);
+            psFree(recipe);  // Drop reference
+            return false;
+        }
+
+        if (!psMetadataUpdate(current, recipe)) {
+            psError(PS_ERR_IO, false, "Failed to update recipe for %s from camera recipe", recipeName);
+            psFree(recipe);  // Drop reference
+            return false;
+        }
         psFree(recipe);  // Drop reference
     }
@@ -397,5 +399,5 @@
 // entries for an existing recipe metadata
 static bool loadRecipeFromArguments(bool *status,
-				    pmConfig *config // The configuration into which to read the recipes
+                                    pmConfig *config // The configuration into which to read the recipes
     )
 {
@@ -425,19 +427,19 @@
         // increment the ref counter to protect the data
 
-        psMetadata *recipe = item->data.V; // Recipe of interest
+        psMetadata *recipe = item->data.md; // Recipe of interest
 
         // if this named recipe exists, supplement it
         psMetadata *current = psMetadataLookupMetadata(NULL, config->recipes, item->name);
         if (!current) {
-	    psError(PS_ERR_IO, false, "Failed to find recipe for %s in master recipe list", item->name);
-	    psFree(recipe);  // Drop reference
-	    return false;
-	}
-	psTrace("psModules.config", 3, "Supplementing %s from arguments.\n", item->name);
+            psError(PS_ERR_IO, false, "Failed to find recipe for %s in master recipe list", item->name);
+            psFree(recipe);  // Drop reference
+            return false;
+        }
+        psTrace("psModules.config", 3, "Supplementing %s from arguments.\n", item->name);
 
         if (!psMetadataUpdate (current, recipe)) {
-	    psError(PS_ERR_IO, false, "Failed to update recipe for %s from camera recipe", item->name);
-	    return false;
-	}
+            psError(PS_ERR_IO, false, "Failed to update recipe for %s from camera recipe", item->name);
+            return false;
+        }
     }
     psFree(recipesIter);
@@ -449,5 +451,5 @@
 // entries for an existing recipe metadata
 static bool loadRecipeSymbols(bool *status,
-			      pmConfig *config // The configuration into which to read the recipes
+                              pmConfig *config // The configuration into which to read the recipes
     )
 {
@@ -465,30 +467,30 @@
     while ((item = psMetadataGetAndIncrement(iter))) {
         assert(item->type == PS_DATA_STRING); // It should be this type: we put it in ourselves
-        const char *sourceName = item->data.V; // The name of the symbolic reference
+        const char *sourceName = item->data.str; // The name of the symbolic reference
         const char *targetName = item->name;
-	psTrace("psModules.config", 3, "Supplementing %s from %s.\n", targetName, sourceName);
-
-	// the target recipe must exist; select it
-	psMetadata *targetMD = psMetadataLookupMetadata(&found, config->recipes, targetName);
-	if (!targetMD) {
-	    psError(PS_ERR_IO, true, "Failed to find recipe for %s in master recipe list", targetName);
-	    return false;
-	}
+        psTrace("psModules.config", 3, "Supplementing %s from %s.\n", targetName, sourceName);
+
+        // the target recipe must exist; select it
+        psMetadata *targetMD = psMetadataLookupMetadata(&found, config->recipes, targetName);
+        if (!targetMD) {
+            psError(PS_ERR_IO, true, "Failed to find recipe for %s in master recipe list", targetName);
+            return false;
+        }
 
         // search for sourceName : it may be in config->recipes or target MD
         psMetadata *sourceMD = NULL;
-	sourceMD = psMetadataLookupMetadata(&found, config->recipes, sourceName);
+        sourceMD = psMetadataLookupMetadata(&found, config->recipes, sourceName);
         if (!sourceMD) {
-	    sourceMD = psMetadataLookupMetadata(&found, targetMD, sourceName);
-	    if (!sourceMD) {
-		psError(PS_ERR_IO, false, "Selected symbolic name %s does not exist in recipes", sourceName);
-		return false;
-	    }
-	}
-
-	if (!psMetadataUpdate(targetMD, sourceMD)) {
-	    psError(PS_ERR_IO, false, "Failed to update recipe for %s from camera recipe", targetName);
-	    return false;
-	}
+            sourceMD = psMetadataLookupMetadata(&found, targetMD, sourceName);
+            if (!sourceMD) {
+                psError(PS_ERR_IO, false, "Selected symbolic name %s does not exist in recipes", sourceName);
+                return false;
+            }
+        }
+
+        if (!psMetadataUpdate(targetMD, sourceMD)) {
+            psError(PS_ERR_IO, false, "Failed to update recipe for %s from camera recipe", targetName);
+            return false;
+        }
     }
     psFree(iter);
@@ -501,5 +503,5 @@
 // entries for an existing recipe metadata
 static bool loadRecipeOptions(bool *status,
-			      pmConfig *config // The configuration into which to read the recipes
+                              pmConfig *config // The configuration into which to read the recipes
     )
 {
@@ -524,6 +526,6 @@
     psMetadataItem *item = NULL;    // MD item containing the filename, from recipe iteration
     while ((item = psMetadataGetAndIncrement(recipesIter))) {
-	char *recipeName = item->name;
-        psMetadata *recipe = item->data.V;
+        char *recipeName = item->name;
+        psMetadata *recipe = item->data.md;
 
         // type mismatch is a serious error
@@ -535,11 +537,11 @@
         psMetadata *current = psMetadataLookupMetadata(NULL, config->recipes, recipeName);
         if (!current) {
-	    psError(PS_ERR_IO, false, "Selected recipe %s is not found in camera recipe", recipeName);
-	    return false;
-	}
+            psError(PS_ERR_IO, false, "Selected recipe %s is not found in camera recipe", recipeName);
+            return false;
+        }
         if (!psMetadataUpdate (current, recipe)) {
-	    psError(PS_ERR_IO, false, "Failed to update recipe for %s from camera recipe", recipeName);
-	    return false;
-	}
+            psError(PS_ERR_IO, false, "Failed to update recipe for %s from camera recipe", recipeName);
+            return false;
+        }
     }
     psFree(recipesIter);
