diff --git a/Lib/idlelib/config-main.def b/Lib/idlelib/config-main.def
index bfdbfa1..d355922 100644
--- a/Lib/idlelib/config-main.def
+++ b/Lib/idlelib/config-main.def
@@ -59,11 +59,11 @@
 
 [Theme]
 user= 0  
-name= "IDLE Classic New"
+name= IDLE Classic New
 
 [Keys]
 user= 0  
-name= "IDLE Classic - windows"
+name= IDLE Classic - windows
 
 [RecentFiles]
 1=
diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py
index 94a380c..7a498a3 100644
--- a/Lib/idlelib/configDialog.py
+++ b/Lib/idlelib/configDialog.py
@@ -131,6 +131,12 @@
     def SetFontSample(self):
         self.editFont.config(size=self.fontSize.get(),weight=NORMAL,
             family=self.listFontName.get(self.listFontName.curselection()[0]))
+
+    def SetHighlightSampleBinding(self,event):
+        self.SetHighlightSample()
+        
+    def SetHighlightSample(self):
+        pass    
     
     def CreateWidgets(self):
         self.framePages = Frame(self)
@@ -287,8 +293,8 @@
         frameFontSet=Frame(frameSet)
         labelCustomTitle=Label(frameCustom,text='Set Custom Highlighting')
         labelTargetTitle=Label(self.frameHighlightTarget,text='for : ')
-        self.optMenuHighlightTarget=OptionMenu(self.frameHighlightTarget,
-            self.highlightTarget,'normal text background','test target interface item 2')
+        self.optMenuHighlightTarget=DynOptionMenu(self.frameHighlightTarget,
+            self.highlightTarget,None,command=None)
         buttonSetColour=Button(self.frameColourSet,text='Set Colour',
                 command=self.GetColour)
         labelFontTitle=Label(frameFontSet,text='Set Font Style')
@@ -308,19 +314,17 @@
         #    width=2,height=10)
         labelThemeTitle=Label(frameTheme,text='Select a Highlighting Theme')
         labelTypeTitle=Label(frameTheme,text='Select : ')
-        radioThemeBuiltin=Radiobutton(frameTheme,variable=self.themeType,
+        self.radioThemeBuiltin=Radiobutton(frameTheme,variable=self.themeType,
             value=0,command=self.SetThemeType,text='a Built-in Theme')
-        radioThemeCustom=Radiobutton(frameTheme,variable=self.themeType,
+        self.radioThemeCustom=Radiobutton(frameTheme,variable=self.themeType,
             value=1,command=self.SetThemeType,text='a Custom Theme')
-        self.optMenuThemeBuiltin=OptionMenu(frameTheme,
-            self.builtinTheme,'test builtin junk','test builtin junk 2')
-        self.builtinTheme.set('test builtin junk')
-        self.optMenuThemeCustom=OptionMenu(frameTheme,
-            self.customTheme,'test custom junk','test custom junk 2')
-        self.customTheme.set('test custom junk')
-        self.themeType.set(0)
+        self.optMenuThemeBuiltin=DynOptionMenu(frameTheme,
+            self.builtinTheme,None,command=self.SetHighlightSampleBinding)
+        self.optMenuThemeCustom=DynOptionMenu(frameTheme,
+            self.customTheme,None,command=self.SetHighlightSampleBinding)
+ #       self.themeType.set(0)
         self.buttonDeleteCustomTheme=Button(frameTheme,text='Delete Custom Theme')
-        self.SetThemeType()
+ #       self.SetThemeType()
         ##widget packing
         #body
         frameCustom.pack(side=LEFT,padx=5,pady=10,expand=TRUE,fill=BOTH)
@@ -344,8 +348,8 @@
         #frameDivider.pack(side=LEFT,fill=Y,padx=5,pady=5)
         labelThemeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
         labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
-        radioThemeBuiltin.pack(side=TOP,anchor=W,padx=5)
-        radioThemeCustom.pack(side=TOP,anchor=W,padx=5,pady=2)
+        self.radioThemeBuiltin.pack(side=TOP,anchor=W,padx=5)
+        self.radioThemeCustom.pack(side=TOP,anchor=W,padx=5,pady=2)
         self.optMenuThemeBuiltin.pack(side=TOP,fill=X,padx=5,pady=5)
         self.optMenuThemeCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5)
         self.buttonDeleteCustomTheme.pack(side=TOP,fill=X,padx=5,pady=5)
@@ -387,19 +391,16 @@
         #frameKeySets
         labelKeysTitle=Label(frameKeySets,text='Select a Key Set')
         labelTypeTitle=Label(frameKeySets,text='Select : ')
-        radioKeysBuiltin=Radiobutton(frameKeySets,variable=self.keysType,
+        self.radioKeysBuiltin=Radiobutton(frameKeySets,variable=self.keysType,
             value=0,command=self.SetKeysType,text='a Built-in Key Set')
-        radioKeysCustom=Radiobutton(frameKeySets,variable=self.keysType,
+        self.radioKeysCustom=Radiobutton(frameKeySets,variable=self.keysType,
             value=1,command=self.SetKeysType,text='a Custom Key Set')
-        self.optMenuKeysBuiltin=OptionMenu(frameKeySets,
-            self.builtinKeys,'test builtin junk','test builtin junk 2')
-        self.builtinKeys.set('test builtin junk')
-        self.optMenuKeysCustom=OptionMenu(frameKeySets,
-            self.customKeys,'test custom junk','test custom junk 2')
-        self.customKeys.set('test custom junk')
-        self.keysType.set(0)
+        self.optMenuKeysBuiltin=DynOptionMenu(frameKeySets,
+            self.builtinKeys,None,command=None)
+        self.optMenuKeysCustom=DynOptionMenu(frameKeySets,
+            self.customKeys,None,command=None)
         self.buttonDeleteCustomKeys=Button(frameKeySets,text='Delete Custom Key Set')
-        self.SetKeysType()
+#         self.SetKeysType()
         ##widget packing
         #body
         frameCustom.pack(side=LEFT,padx=5,pady=5,expand=TRUE,fill=BOTH)
@@ -422,8 +423,8 @@
         #frameKeySets
         labelKeysTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
         labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
-        radioKeysBuiltin.pack(side=TOP,anchor=W,padx=5)
-        radioKeysCustom.pack(side=TOP,anchor=W,padx=5,pady=2)
+        self.radioKeysBuiltin.pack(side=TOP,anchor=W,padx=5)
+        self.radioKeysCustom.pack(side=TOP,anchor=W,padx=5,pady=2)
         self.optMenuKeysBuiltin.pack(side=TOP,fill=X,padx=5,pady=5)
         self.optMenuKeysCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5)
         self.buttonDeleteCustomKeys.pack(side=TOP,fill=X,padx=5,pady=5)
@@ -539,9 +540,49 @@
         self.tabCols.set(tabCols)
     
     def LoadThemeLists(self):
-        ##default themes
-        pass
-
+        ##current theme type radiobutton
+        self.themeType.set(idleConf.GetOption('main','Theme','user',type='int'))
+        ##currently set theme
+        currentOption=idleConf.GetOption('main','Theme','name')
+        ##load option menus
+        if self.themeType.get() == 0: #default theme selected
+            itemList=idleConf.GetSectionList('default','highlight')
+            self.optMenuThemeBuiltin.SetMenu(itemList,currentOption)
+            itemList=idleConf.GetSectionList('user','highlight')
+            if not itemList:
+                self.radioThemeCustom.config(state=DISABLED)
+                self.customTheme.set('- no custom themes -')    
+            else:
+                self.optMenuThemeCustom.SetMenu(itemList,itemList[0])
+        elif self.themeType.get() == 1: #user theme selected
+            itemList=idleConf.GetSectionList('user','highlight')
+            self.optMenuThemeCustom.SetMenu(itemList,currentOption)
+            itemList=idleConf.GetSectionList('default','highlight')
+            self.optMenuThemeBuiltin.SetMenu(itemList,itemList[0])
+        self.SetThemeType()   
+    
+    def LoadKeyLists(self):
+        ##current keys type radiobutton
+        self.keysType.set(idleConf.GetOption('main','Keys','user',type='int'))
+        ##currently set keys
+        currentOption=idleConf.GetOption('main','Keys','name')
+        ##load option menus
+        if self.keysType.get() == 0: #default theme selected
+            itemList=idleConf.GetSectionList('default','keys')
+            self.optMenuKeysBuiltin.SetMenu(itemList,currentOption)
+            itemList=idleConf.GetSectionList('user','keys')
+            if not itemList:
+                self.radioKeysCustom.config(state=DISABLED)    
+                self.customKeys.set('- no custom keys -')    
+            else:
+                self.optMenuKeysCustom.SetMenu(itemList,itemList[0])
+        elif self.keysType.get() == 1: #user theme selected
+            itemList=idleConf.GetSectionList('user','keys')
+            self.optMenuKeysCustom.SetMenu(itemList,currentOption)
+            itemList=idleConf.GetSectionList('default','keys')
+            self.optMenuKeysBuiltin.SetMenu(itemList,itemList[0])
+        self.SetKeysType()   
+        
     def LoadConfigs(self):
         """
         load configuration from default and user config files and populate
@@ -553,6 +594,7 @@
         ### highlighting page
         self.LoadThemeLists()
         ### keys page
+        self.LoadKeyLists()
         ### help page
         ### general page
         
diff --git a/Lib/idlelib/configHandler.py b/Lib/idlelib/configHandler.py
index e071352..2e5e2e9 100644
--- a/Lib/idlelib/configHandler.py
+++ b/Lib/idlelib/configHandler.py
@@ -28,9 +28,12 @@
         Get an option value for given section/option or return default.
         If type is specified, return as type.
         """
-        if type=='bool': getVal=self.getboolean
-        elif type=='int': getVal=self.getint
-        else: getVal=self.get
+        if type=='bool': 
+            getVal=self.getboolean
+        elif type=='int': 
+            getVal=self.getint
+        else: 
+            getVal=self.get
         if self.has_option(section,option):
             #return getVal(section, option, raw, vars)
             return getVal(section, option)
@@ -165,7 +168,6 @@
         """
         pass
     
-    
     def GetKeys(self, name=None):
         """
         Gets the requested keybindings or returns a final fallback keybinding 
@@ -174,7 +176,6 @@
         """
         pass
     
-    
     def LoadCfgFiles(self):
         """ 
         load all configuration files.
diff --git a/Lib/idlelib/dynOptionMenuWidget.py b/Lib/idlelib/dynOptionMenuWidget.py
index 48a0886..8f64a0a 100644
--- a/Lib/idlelib/dynOptionMenuWidget.py
+++ b/Lib/idlelib/dynOptionMenuWidget.py
@@ -21,7 +21,7 @@
         self.variable=variable
         self.command=kwargs.get('command')
     
-    def SetMenu(self,valueList,value):
+    def SetMenu(self,valueList,value=None):
         """
         clear and reload the menu with a new set of options.
         valueList - list of new options
@@ -31,4 +31,5 @@
         for item in valueList:
             self['menu'].add_command(label=item,
                     command=_setit(self.variable,item,self.command))
-        self.variable.set(value)
+        if value:
+            self.variable.set(value)
