Index: gtk2_ardour/export_channel_selector.h
===================================================================
--- gtk2_ardour/export_channel_selector.h	(revision 13971)
+++ gtk2_ardour/export_channel_selector.h	(working copy)
@@ -122,7 +122,7 @@
 		typedef Gtk::TreeModelColumn<Glib::RefPtr<Gtk::ListStore> > ComboCol;
 		ComboCol                             port_list_col;
 
-		/* Channel struct, that represents the selected port and it's name */
+		/* Channel struct, that represents the selected port and its name */
 
 		struct Channel {
 		  public:
Index: gtk2_ardour/export_dialog.cc
===================================================================
--- gtk2_ardour/export_dialog.cc	(revision 13971)
+++ gtk2_ardour/export_dialog.cc	(working copy)
@@ -143,7 +143,8 @@
 void
 ExportDialog::expanded_changed ()
 {
-	set_resizable(advanced->get_expanded());
+	set_resizable(false);
+	set_resizable(timespan_expander->get_expanded() || channels_expander->get_expanded()); 
 }
 
 void
@@ -152,57 +153,25 @@
 	Gtk::Alignment * preset_align = Gtk::manage (new Gtk::Alignment());
 	preset_align->add (*preset_selector);
 	preset_align->set_padding (0, 12, 0, 0);
+	get_vbox()->set_homogeneous (false);
 	get_vbox()->pack_start (*preset_align, false, false, 0);
-
-	Gtk::VPaned * advanced_paned = Gtk::manage (new Gtk::VPaned());
-
-	Gtk::VBox* timespan_vbox = Gtk::manage (new Gtk::VBox());
-	timespan_vbox->set_spacing (12);
-	timespan_vbox->set_border_width (12);
-
-	Gtk::Alignment * timespan_align = Gtk::manage (new Gtk::Alignment());
-	timespan_label = Gtk::manage (new Gtk::Label (_("Time Span"), Gtk::ALIGN_LEFT));
-	timespan_align->add (*timespan_selector);
-	timespan_align->set_padding (0, 0, 18, 0);
-	timespan_vbox->pack_start (*timespan_label, false, false, 0);
-	timespan_vbox->pack_start (*timespan_align, true, true, 0);
-	advanced_paned->pack1(*timespan_vbox, true, false);
-
-	Gtk::VBox* channels_vbox = Gtk::manage (new Gtk::VBox());
-	channels_vbox->set_spacing (12);
-	channels_vbox->set_border_width (12);
-
-	Gtk::Alignment * channels_align = Gtk::manage (new Gtk::Alignment());
-	channels_label = Gtk::manage (new Gtk::Label (_("Channels"), Gtk::ALIGN_LEFT));
-	channels_align->add (*channel_selector);
-	channels_align->set_padding (0, 12, 18, 0);
-	channels_vbox->pack_start (*channels_label, false, false, 0);
-	channels_vbox->pack_start (*channels_align, true, true, 0);
-	advanced_paned->pack2(*channels_vbox, channel_selector_is_expandable(), false);
-
 	get_vbox()->pack_start (*file_notebook, false, false, 0);
-	get_vbox()->pack_start (warning_widget, false, false, 0);
-	get_vbox()->pack_start (progress_widget, false, false, 0);
 
-	advanced = Gtk::manage (new Gtk::Expander (_("Time span and channel options")));
-	advanced->property_expanded().signal_changed().connect(
+	timespan_expander = Gtk::manage (new Gtk::Expander (_("Time Span")));
+	timespan_expander->property_expanded().signal_changed().connect(
 		sigc::mem_fun(*this, &ExportDialog::expanded_changed));
-	advanced->add (*advanced_paned);
+	timespan_expander->add (*timespan_selector);
 
-	if (channel_selector_is_expandable()) {
-		advanced_sizegroup = Gtk::SizeGroup::create(Gtk::SIZE_GROUP_VERTICAL);
-		advanced_sizegroup->add_widget(*timespan_selector);
-		advanced_sizegroup->add_widget(*channel_selector);
-	}
+	channels_expander = Gtk::manage (new Gtk::Expander (_("Channels")));
+	channels_expander->property_expanded().signal_changed().connect(
+		sigc::mem_fun(*this, &ExportDialog::expanded_changed));
+	channels_expander->add (*channel_selector);
+	
+	get_vbox()->pack_start (*timespan_expander, false, false, 0);
+	get_vbox()->pack_start (*channels_expander, false, false, 0);
+	get_vbox()->pack_end   (warning_widget, false, false, 0);
+	get_vbox()->pack_end   (progress_widget, false, false, 0);
 
-	get_vbox()->pack_start (*advanced, true, true);
-
-	Pango::AttrList bold;
-	Pango::Attribute b = Pango::Attribute::create_attr_weight (Pango::WEIGHT_BOLD);
-	bold.insert (b);
-
-	timespan_label->set_attributes (bold);
-	channels_label->set_attributes (bold);
 }
 
 void
@@ -440,7 +409,7 @@
 {
 	ExportDialog::init_gui ();
 
-	channels_label->set_text (_("Source"));
+	channels_expander->set_label (_("Source"));
 }
 
 void
Index: gtk2_ardour/export_dialog.h
===================================================================
--- gtk2_ardour/export_dialog.h	(revision 13971)
+++ gtk2_ardour/export_dialog.h	(working copy)
@@ -86,8 +86,9 @@
 	Gtk::VBox                                 warning_widget;
 	Gtk::VBox                                 progress_widget;
 
-	Gtk::Label *                              timespan_label;
-	Gtk::Label *                              channels_label;
+	/*** GUI components ***/
+	Gtk::Expander * timespan_expander;
+	Gtk::Expander * channels_expander;
 
   private:
 
@@ -112,10 +113,7 @@
 	PublicEditor &  editor;
 	StatusPtr       status;
 
-	/*** GUI components ***/
 
-	Glib::RefPtr<Gtk::SizeGroup> advanced_sizegroup;
-	Gtk::Expander * advanced;
 
 	/* Warning area */
 
Index: gtk2_ardour/export_timespan_selector.cc
===================================================================
--- gtk2_ardour/export_timespan_selector.cc	(revision 13971)
+++ gtk2_ardour/export_timespan_selector.cc	(working copy)
@@ -105,6 +105,9 @@
 	/* Range view */
 
 	range_list = Gtk::ListStore::create (range_cols);
+	// order by location start times
+	range_list->set_sort_column(range_cols.location, Gtk::SORT_ASCENDING);
+	range_list->set_sort_func(range_cols.location, sigc::mem_fun(*this, &ExportTimespanSelector::location_sorter));
 	range_view.set_model (range_list);
 	range_view.set_headers_visible (true);
 }
@@ -114,6 +117,22 @@
 
 }
 
+int
+ExportTimespanSelector::location_sorter(Gtk::TreeModel::iterator a, Gtk::TreeModel::iterator b)
+{
+	Location *l1 = (*a)[range_cols.location];
+	Location *l2 = (*b)[range_cols.location];
+	const Location *ls = state->session_range.get();
+
+	// always sort session range first
+	if (l1 == ls)
+		return -1;
+	if (l2 == ls)
+		return +1;
+
+	return l1->start() - l2->start();
+}
+
 void
 ExportTimespanSelector::add_range_to_selection (ARDOUR::Location const * loc)
 {
Index: gtk2_ardour/export_timespan_selector.h
===================================================================
--- gtk2_ardour/export_timespan_selector.h	(revision 13971)
+++ gtk2_ardour/export_timespan_selector.h	(working copy)
@@ -84,6 +84,7 @@
 	void update_range_name (std::string const & path, std::string const & new_text);
 
 	void set_selection_state_of_all_timespans (bool);
+	int location_sorter(Gtk::TreeModel::iterator a, Gtk::TreeModel::iterator b);
 
 	/*** GUI components ***/
 
@@ -127,7 +128,7 @@
 	Gtk::ScrolledWindow          range_scroller;
 };
 
-/// Allows seleting multiple timespans
+/// Allows selecting multiple timespans
 class ExportTimespanSelectorMultiple : public ExportTimespanSelector
 {
   public:
