Index: libi4uccore/settings.vala
===================================================================
--- libi4uccore/settings.vala	(revision 9cd11c02b25537ee501c8e398b6baeb2e6eb7bc7)
+++ libi4uccore/settings.vala	(revision 7960aa9d2d3dd725b78cfdaf11e252649be6141f)
@@ -21,6 +21,40 @@
 using Gee;
 
+public class OptionSettings : GLib.Object
+{
+	public string name { set; get; }
+	public string value { set; get; }
+	public bool active { set; get; }
+	
+	public string to_xml (size_t tab_width)
+	{
+		var prefix = string.nfill (tab_width, '\t');
+		var xml_str = "<option_value name=\"%s\" value=\"%s\" active=\"%s\"/>\n";
+		return prefix + xml_str.printf (_name, _value, _active.to_string ());
+	}
+}
+
+public class ProgrammerSettings : GLib.Object
+{
+	private HashMap<string, OptionSettings> _options = new HashMap<string, OptionSettings> ();
+	
+	public string name { set; get; }
+	public Gee.Map<string, OptionSettings> options { get { return _options; } }
+	
+	public string to_xml (size_t tab_width)
+	{
+		var prefix = string.nfill (tab_width, '\t');
+		var xml_str = prefix + "<programmer name=\"%s\">\n".printf (_name);
+		foreach (var option_settings in _options.values)
+			xml_str += option_settings.to_xml (tab_width+1);
+		xml_str += prefix + "</programmer>\n";
+		return xml_str;
+	}
+}
+
 public class I4uc.Core.Settings : GLib.Object
 {
+	private HashMap<string, ProgrammerSettings> _programmers = new HashMap<string, ProgrammerSettings> ();
+	
 	public string working_folder { set; get; }
 	
@@ -44,4 +78,5 @@
 	// Programmers settings
 	public string programmer { set; get; default = ""; }
+	public Gee.Map<string, ProgrammerSettings> programmers { get { return _programmers; } }
 	
 	public Settings ()
@@ -72,5 +107,10 @@
 		
 		// Programmers settings
-		xml_str += @"\t<programmer>$(_programmer)</programmer>\n";
+		xml_str += @"\t<current_programmer>$(_programmer)</current_programmer>\n";
+		
+		xml_str += "\t<programmers>\n";
+		foreach (var programmer in _programmers.values)
+			xml_str += programmer.to_xml (2);
+		xml_str += "\t</programmers>\n";
 		
 		return xml_str + "</settings>";
