Index: libcfa/src/parseconfig.cfa
===================================================================
--- libcfa/src/parseconfig.cfa	(revision ad8072cf6fc1f7e6fff797644b18f485f842ec5e)
+++ libcfa/src/parseconfig.cfa	(revision e74ba777216b604fe98a1fb5cba0e95cb1d19ee6)
@@ -27,12 +27,18 @@
 	* [ char *, char * ] data;
 };
-void ?{}( KVPairs & kvp ) with ( kvp ) {	// default constructor
+void ?{}( KVPairs & kvp ) with ( kvp ) {				// default constructor
 	size = 0; max_size = 0; data = 0p;
 }
-void ?{}( KVPairs & kvp, int size ) { 		// initialization
+void ?{}( KVPairs & kvp, int size ) { 					// initialization
 	kvp.[ size, max_size ] = [ 0, size ];
 	kvp.data = alloc( size );
 }
-void ^?{}( KVPairs & kvp ) with ( kvp ) {	// destructor
+/*
+void ?{}( KVPairs & kvp, KVPairs val ) with( val ) { 	// copy, deep
+	kvp.[ size, max_size ] = [ size, max_size ];
+	kvp.data = alloc( size, data );
+}
+*/
+void ^?{}( KVPairs & kvp ) with ( kvp ) {				// destructor
 	free( data );
 	size = 0; max_size = 0; data = 0p;
@@ -61,5 +67,5 @@
 // Parse configuration from a file formatted in shell style
 KVPairs & parse_shell_config_format( const char * config_file, size_t num_entries ) {
-	KVPairs kv_pairs = { num_entries };
+	* KVPairs kv_pairs;// = { num_entries };
 
 	ifstream in;
@@ -74,5 +80,5 @@
 			in | value;
 
-			add_kv_pair( kv_pairs, key, value );
+			add_kv_pair( *kv_pairs, key, value );
 
 		  if ( fail( in ) ) break;
@@ -84,5 +90,5 @@
 	close( in );
 
-	return kv_pairs;
+	return *kv_pairs;
 }
 
