Hi Michael, Now that I have the automatic R1 and R2 analysis frames almost 100% functional (I still need to create a relax module called 'auto_analyses.relax_curve_fit' and use this for execution), I have noticed that we can better reuse code through out the GUI. For example, the following 3 elements are present in multiple copies in all the analysis frames: - The structure selection element. - The unresolved spins element (this should be spins, not residues, as residues are meaningless in small molecules). - The results directory. I would like to propose a further code simplification. That is that certain GUI elements can be made independent of the analysis. I'll try this with the peak list reading element used in the R1 and R2 frames. I will place this into a new package called 'components' (this can be renamed later). There will then be a class at gui_bieri.components.spectrum.Peak_intensity which contains all the code for the darker grey box in the R1 and R2 frames. This GUI element can then be changed, improved, polished, etc. independently of the rest of the GUI. For example the grid could be replaced with another GTK element that allows for selection of the peak lists. This will also allow the element to be easily extended and recycled for relaxation dispersion. The same can be done for any repeated element. The file layout of 'gui_bieri.components' will look similar to that of 'generic_fns' when the element corresponds to an API call to one of the functions in 'generic_fns'. The classes in 'gui_bieri.components' should accept a sizer box as an argument and pack itself into this. The classes should also accept sizes as arguments for SetMinSize() calls. The could even have methods called by the analysis frame to automatically change sizes in that element if the main window is resized. What do you think? Regards, Edward