Index: libcfa/src/parseconfig.cfa
===================================================================
--- libcfa/src/parseconfig.cfa	(revision 45b772cf0406fccbf48768567f22b812859bc559)
+++ libcfa/src/parseconfig.cfa	(revision ca83227ffb009f34216fed8e1d1fd267cc1e3ae2)
@@ -77,10 +77,4 @@
 
 
-// TODO: Replace KVPairs with vector2 when it's fully functional
-struct KVPairs {
-	size_t size, max_size;
-	* [ * char, * char ] data;
-};
-
 [ void ] ?{}( & KVPairs kvp ) with ( kvp ) {				// default constructor
 	size = 0; max_size = 0; data = 0p;
@@ -157,10 +151,11 @@
 
 // Parse configuration values from intermediate format
-[ void ] parse_config( [] const char config_file, [] config_entry entries, size_t num_entries, config_format format ) {
-	* KVPairs kv_pairs = 0p;
-	choose ( format ) {
-		case TABULAR_CONFIG:
-			kv_pairs = parse_tabular_config_format( config_file, num_entries );
-	}
+[ void ] parse_config(
+		[] const char config_file,
+		[] config_entry entries,
+		size_t num_entries,
+		KVPairs * (*parser)(const char [], size_t)
+) {
+	* KVPairs kv_pairs = parser( config_file, num_entries );
 
 	int entries_so_far = 0;
Index: libcfa/src/parseconfig.hfa
===================================================================
--- libcfa/src/parseconfig.hfa	(revision 45b772cf0406fccbf48768567f22b812859bc559)
+++ libcfa/src/parseconfig.hfa	(revision ca83227ffb009f34216fed8e1d1fd267cc1e3ae2)
@@ -6,8 +6,4 @@
 // *********************************** initial declarations ***********************************
 
-
-enum config_format {
-	TABULAR_CONFIG
-};
 
 struct config_entry {
@@ -54,4 +50,12 @@
 }
 
+// TODO: Replace KVPairs with vector2 when it's fully functional
+struct KVPairs {
+	size_t size, max_size;
+	* [ * char, * char ] data;
+};
+
+[ void ] add_kv_pair( & KVPairs kv_pairs, [] char key, [] char value );
+
 
 // *********************************** exceptions ***********************************
@@ -82,5 +86,12 @@
 
 
-void parse_config( const char * config_file, config_entry entries[], size_t num_entries, config_format format );
+[ * KVPairs ] parse_tabular_config_format( [] const char config_file, size_t num_entries );
+
+[ void ] parse_config(
+	[] const char config_file,
+	[] config_entry entries,
+	size_t num_entries,
+	KVPairs * (*parser)(const char [], size_t)
+);
 
 bool parse( const char *, const char * & );
