diff -ur ardour-0.9beta16.1.old/gtk_ardour/ardour_dialog.h ardour-0.9beta16.1/gtk_ardour/ardour_dialog.h
--- ardour-0.9beta16.1.old/gtk_ardour/ardour_dialog.h	2004-01-14 05:48:48.000000000 +0100
+++ ardour-0.9beta16.1/gtk_ardour/ardour_dialog.h	2004-06-15 00:05:03.038503488 +0200
@@ -47,6 +47,17 @@
 	void stop (int);
 	void set_keyboard_input (bool yn);
 	int  run_status();
+	gint wm_close_event (GdkEventAny *);
+	gint wm_doi_event (GdkEventAny *);
+  protected:
+	virtual void set_session (ARDOUR::Session* s) {
+		session = s;
+	}
+
+  public:
+	virtual void session_gone () {
+		set_session (0);
+	}
 
   protected:
 	gint enter_notify_event_impl (GdkEventCrossing*);
@@ -55,19 +66,11 @@
 
 	ARDOUR::Session *session;
 
-	virtual void set_session (ARDOUR::Session* s) {
-		session = s;
-	}
 
-	virtual void session_gone () {
-		set_session (0);
-	}
 
 	void quit ();
 	void wm_close();
 	void wm_doi ();
-	gint wm_close_event (GdkEventAny *);
-	gint wm_doi_event (GdkEventAny *);
 
   private:
 	int  _run_status;
diff -ur ardour-0.9beta16.1.old/gtk_ardour/audio_time_axis.h ardour-0.9beta16.1/gtk_ardour/audio_time_axis.h
--- ardour-0.9beta16.1.old/gtk_ardour/audio_time_axis.h	2004-05-18 03:52:09.000000000 +0200
+++ ardour-0.9beta16.1/gtk_ardour/audio_time_axis.h	2004-06-14 23:51:19.935634144 +0200
@@ -252,7 +252,7 @@
 	void show_all_automation ();
 	void show_existing_automation ();
 
-	friend struct RedirectAutomationNode {
+	struct RedirectAutomationNode {
 	    unsigned long     what;
 	    Gtk::CheckMenuItem* menu_item;
 	    AutomationTimeAxisView* view;
@@ -264,7 +264,7 @@
 	    ~RedirectAutomationNode ();
 	};
 
-	friend struct RedirectAutomationInfo {
+	struct RedirectAutomationInfo {
 	    ARDOUR::Redirect* redirect;
 	    bool valid;
 	    Gtk::Menu* menu;
diff -ur ardour-0.9beta16.1.old/gtk_ardour/editor_ops.cc ardour-0.9beta16.1/gtk_ardour/editor_ops.cc
--- ardour-0.9beta16.1.old/gtk_ardour/editor_ops.cc	2004-05-27 04:31:20.000000000 +0200
+++ ardour-0.9beta16.1/gtk_ardour/editor_ops.cc	2004-06-14 23:58:53.613664600 +0200
@@ -2704,7 +2704,7 @@
 void
 Editor::paste_named_selection (float times)
 {
-	using Gtk::CList_Helpers;
+	//using Gtk::CList_Helpers;
 	Gtk::CList_Helpers::SelectionList& selected = named_selection_display.selection();
 	TrackSelection::iterator i;
 
diff -ur ardour-0.9beta16.1.old/gtk_ardour/editor_region_list.cc ardour-0.9beta16.1/gtk_ardour/editor_region_list.cc
--- ardour-0.9beta16.1.old/gtk_ardour/editor_region_list.cc	2004-03-10 06:14:29.000000000 +0100
+++ ardour-0.9beta16.1/gtk_ardour/editor_region_list.cc	2004-06-14 23:59:18.373900472 +0200
@@ -195,7 +195,7 @@
 void
 Editor::add_audio_region_to_region_display (AudioRegion *region)
 {
-	using Gtk::CTree_Helpers;
+	//using Gtk::CTree_Helpers;
 
 	vector<const char*> item;
 	Gtk::CTree_Helpers::RowList::iterator i;
diff -ur ardour-0.9beta16.1.old/gtk_ardour/mixer_strip.cc ardour-0.9beta16.1/gtk_ardour/mixer_strip.cc
--- ardour-0.9beta16.1.old/gtk_ardour/mixer_strip.cc	2004-05-19 16:30:28.000000000 +0200
+++ ardour-0.9beta16.1/gtk_ardour/mixer_strip.cc	2004-06-15 00:02:47.023180960 +0200
@@ -1830,7 +1830,7 @@
 gint
 MixerStrip::compute_redirect_sort_keys ()
 {
-	using Gtk::CList_Helpers;
+	//using Gtk::CList_Helpers;
 	CList_Helpers::RowList::iterator i;
 	unsigned long sort_key;
 
diff -ur ardour-0.9beta16.1.old/gtk_ardour/route_params_ui.cc ardour-0.9beta16.1/gtk_ardour/route_params_ui.cc
--- ardour-0.9beta16.1.old/gtk_ardour/route_params_ui.cc	2004-05-08 14:52:09.000000000 +0200
+++ ardour-0.9beta16.1/gtk_ardour/route_params_ui.cc	2004-06-15 00:05:19.435010840 +0200
@@ -1037,7 +1037,7 @@
 gint
 RouteParams_UI::compute_redirect_sort_keys ()
 {
-	using Gtk::CList_Helpers;
+	//using Gtk::CList_Helpers;
 	CList_Helpers::RowList::iterator i;
 	unsigned long sort_key;
 
diff -ur ardour-0.9beta16.1.old/gtk_ardour/route_ui.h ardour-0.9beta16.1/gtk_ardour/route_ui.h
--- ardour-0.9beta16.1.old/gtk_ardour/route_ui.h	2004-01-14 05:48:49.000000000 +0100
+++ ardour-0.9beta16.1/gtk_ardour/route_ui.h	2004-06-15 00:02:21.368081128 +0200
@@ -48,6 +48,27 @@
 
 	string name() const;
 	
+	void solo_changed(void*);
+	void mute_changed(void*);
+	void route_rec_enable_changed(void*);
+	void session_rec_enable_changed();
+
+	void toggle_mute_menu(ARDOUR::mute_type, Gtk::CheckMenuItem*);
+	void pre_fader_toggle(void*, Gtk::CheckMenuItem*);
+	
+	gint mute_press(GdkEventButton*);
+	gint mute_release(GdkEventButton*);
+	gint solo_press(GdkEventButton*);
+	gint solo_release(GdkEventButton*);
+	gint rec_enable_press(GdkEventButton*);
+
+	void remove_this_route ();
+	void route_rename();
+	virtual void name_changed (void *src);
+	void disconnect_input ();
+	void disconnect_output ();
+	void toggle_route_active ();
+
   protected:
 	ARDOUR::Route& _route;
 
@@ -68,19 +89,7 @@
 	void ensure_xml_node ();
 
 	
-	gint mute_press(GdkEventButton*);
-	gint mute_release(GdkEventButton*);
-	gint solo_press(GdkEventButton*);
-	gint solo_release(GdkEventButton*);
-	gint rec_enable_press(GdkEventButton*);
-
-	void solo_changed(void*);
-	void mute_changed(void*);
-	void route_rec_enable_changed(void*);
-	void session_rec_enable_changed();
 
-	void toggle_mute_menu(ARDOUR::mute_type, Gtk::CheckMenuItem*);
-	void pre_fader_toggle(void*, Gtk::CheckMenuItem*);
 	void post_fader_toggle(void*, Gtk::CheckMenuItem*);
 	void control_outs_toggle(void*, Gtk::CheckMenuItem*);
 	void main_outs_toggle(void*, Gtk::CheckMenuItem*);
@@ -98,23 +107,15 @@
 
 	void rec_enable_button_blink (bool onoff, ARDOUR::DiskStream *, Gtk::Widget *w);
 	
-	void remove_this_route ();
 	static gint idle_remove_this_route (RouteUI *);
 
-	void route_rename();
-	
-	virtual void name_changed (void *src);
 	void route_removed ();
 
 	static gint okay_gplusplus_cannot_do_complex_templates (RouteUI *rui);
 
 	Gtk::CheckMenuItem *route_active_menu_item;
-	void toggle_route_active ();
 	void route_active_changed ();
 
-	void disconnect_input ();
-	void disconnect_output ();
-
 	void update_rec_display ();
 	void update_mute_display ();
 	void update_solo_display ();
diff -ur ardour-0.9beta16.1.old/gtk_ardour/visual_time_axis.h ardour-0.9beta16.1/gtk_ardour/visual_time_axis.h
--- ardour-0.9beta16.1.old/gtk_ardour/visual_time_axis.h	2004-01-29 05:56:46.000000000 +0100
+++ ardour-0.9beta16.1/gtk_ardour/visual_time_axis.h	2004-06-15 00:07:16.332239760 +0200
@@ -134,7 +134,21 @@
 		 * Emitted when this time axis has been selected for removal
 		 */
 		//SigC::Signal2<void,std::string,void*> VisualTimeAxisRemoved ;
+		
+		/**
+		 * Handles the Removal of this VisualTimeAxis
+		 *
+		 * @param src the identity of the object that initiated the change
+		 */
+		virtual void remove_this_time_axis(void* src) ;
 
+		/**
+		 * Construct a new prompt to receive a new name for this TimeAxis
+		 *
+		 * @see finish_time_axis_rename()
+		 */
+		void start_time_axis_rename() ;
+		
 	protected:
 		//---------------------------------------------------------------------------------------//
 		// Constructor / Desctructor
@@ -153,12 +167,6 @@
 		//---------------------------------------------------------------------------------------//
 		// Handle time axis removal
 		
-		/**
-		 * Handles the Removal of this VisualTimeAxis
-		 *
-		 * @param src the identity of the object that initiated the change
-		 */
-		virtual void remove_this_time_axis(void* src) ;
 		
 		/**
 		 * Callback used to remove this time axis during the gtk idle loop
@@ -210,12 +218,6 @@
 		//---------------------------------------------------------------------------------------//
 		// Handle TimeAxis rename
 		
-		/**
-		 * Construct a new prompt to receive a new name for this TimeAxis
-		 *
-		 * @see finish_time_axis_rename()
-		 */
-		void start_time_axis_rename() ;
 		
 		/**
 		 * Handles the new name for this TimeAxis from the name prompt
diff -ur ardour-0.9beta16.1.old/libs/ardour/ardour/tempo.h ardour-0.9beta16.1/libs/ardour/ardour/tempo.h
--- ardour-0.9beta16.1.old/libs/ardour/ardour/tempo.h	2003-11-21 05:47:45.000000000 +0100
+++ ardour-0.9beta16.1/libs/ardour/ardour/tempo.h	2004-06-14 22:52:46.668731896 +0200
@@ -178,11 +178,13 @@
 	};
 
 	typedef vector<BBTPoint> BBTPointList;
-	
+
+#if 0
 	template<class T> void apply_with_points (T& obj, void (T::*method)(BBTPointList&)) {
 		LockMonitor lm (lock, __LINE__, __FILE__);
 		(obj.*method)(bbt_points);
 	}
+#endif
 	
 	
 	template<class T> void apply_with_metrics (T& obj, void (T::*method)(const Metrics&)) {
diff -ur ardour-0.9beta16.1.old/libs/gtkmm/src/build_sources/proxy.h.m4 ardour-0.9beta16.1/libs/gtkmm/src/build_sources/proxy.h.m4
--- ardour-0.9beta16.1.old/libs/gtkmm/src/build_sources/proxy.h.m4	2003-06-17 05:49:19.000000000 +0200
+++ ardour-0.9beta16.1/libs/gtkmm/src/build_sources/proxy.h.m4	2004-06-14 22:56:31.354574456 +0200
@@ -167,6 +167,7 @@
         }
 
     public:
+      using [ProxySignal]NUM($1)<LIST([R],1,ARG_TYPE($1),[$1],[Obj,gObj,index],1)>::obj;
       SlotType slot()
         {
           SigC::SlotData* tmp=manage(new SigC::SlotData());
diff -ur ardour-0.9beta16.1.old/libs/gtkmm/src/curve.gen_h ardour-0.9beta16.1/libs/gtkmm/src/curve.gen_h
--- ardour-0.9beta16.1.old/libs/gtkmm/src/curve.gen_h	2003-06-17 05:48:57.000000000 +0200
+++ ardour-0.9beta16.1/libs/gtkmm/src/curve.gen_h	2004-06-14 23:16:01.610668488 +0200
@@ -136,6 +136,7 @@
     void gtk_curve_get_vector(GtkCurve*,int,gfloat*),
     void get_vector(int num,gfloat* data));
 
+#if 0
   // For containers       
   template <class Iterator>
   int get_vector(Iterator b,Iterator e) const
@@ -150,6 +151,7 @@
       delete [] data;
       return i;
     };
+#endif
 
   //void gtk_curve_set_vector(GtkCurve*,int,gfloat[]);
   //: Sets the vector of points on the curve.
diff -ur ardour-0.9beta16.1.old/libs/gtkmm/src/gtk--/base.h ardour-0.9beta16.1/libs/gtkmm/src/gtk--/base.h
--- ardour-0.9beta16.1.old/libs/gtkmm/src/gtk--/base.h	2003-06-17 05:49:27.000000000 +0200
+++ ardour-0.9beta16.1/libs/gtkmm/src/gtk--/base.h	2004-06-14 23:38:48.860814872 +0200
@@ -124,13 +124,13 @@
   }
 
 // interface to gtk--
-/* 
+#if 0
 template <class C>
 typename Wrap<C>::CppType* wrap(C* o)
   {
     return dynamic_cast<typename Wrap<C>::CppType*>(wrap_auto((GtkObject*)(o)));
   }
-*/
+#endif
 
 /********************************************************************/
 
@@ -482,7 +482,9 @@
   value_type operator*() const
   {
     if (node && node->data)
-      return Gtk::wrap(static_cast<impl*>((*node).data));
+      assert("This is not implemented!" == NULL);
+      //return Gtk::wrap(static_cast<impl*>((*node).data));
+#warning Please FIXME
     return 0;
   }
 
diff -ur ardour-0.9beta16.1.old/libs/gtkmm/src/list.gen_h ardour-0.9beta16.1/libs/gtkmm/src/list.gen_h
--- ardour-0.9beta16.1.old/libs/gtkmm/src/list.gen_h	2003-06-17 05:49:00.000000000 +0200
+++ ardour-0.9beta16.1/libs/gtkmm/src/list.gen_h	2004-06-14 23:37:27.607167304 +0200
@@ -87,8 +87,8 @@
   //- items: The items.
   //- position: The position to insert items, starting at 0.
   WRAP_METHOD(
-    void gtk_list_insert_items(GtkList*,GList*,gint),
-    void insert_items(GList *items, gint position));
+   void gtk_list_insert_items(GtkList*,GList*,gint),
+   void insert_items(GList *items, gint position));
 
   //: Adds items to the end of the list.
   //- items: The items.
diff -ur ardour-0.9beta16.1.old/libs/gtkmmext/pix.cc ardour-0.9beta16.1/libs/gtkmmext/pix.cc
--- ardour-0.9beta16.1.old/libs/gtkmmext/pix.cc	2003-06-17 05:50:32.000000000 +0200
+++ ardour-0.9beta16.1/libs/gtkmmext/pix.cc	2004-06-14 23:43:14.341455680 +0200
@@ -36,8 +36,8 @@
 
 namespace std
 {
-	struct less<string *> {
-	    bool operator()(string *s1, string *s2) const {
+	template <class T> struct less<T*> {
+	    bool operator()(T *s1, T *s2) const {
 		    return *s1 < *s2;
 	    }
 	};
diff -ur ardour-0.9beta16.1.old/libs/pbd/pbd/stl_delete.h ardour-0.9beta16.1/libs/pbd/pbd/stl_delete.h
--- ardour-0.9beta16.1.old/libs/pbd/pbd/stl_delete.h	2004-05-21 04:43:47.000000000 +0200
+++ ardour-0.9beta16.1/libs/pbd/pbd/stl_delete.h	2004-06-14 22:49:16.742645512 +0200
@@ -24,7 +24,7 @@
 /* To actually use any of these deletion functions, you need to
    first include the revelant container type header.
 */
-#if defined(_CPP_VECTOR) || defined(__SGI_STL_VECTOR)
+#if defined(_CPP_VECTOR) || defined(_GLIBCXX_VECTOR) || defined(__SGI_STL_VECTOR)
 template<class T> void vector_delete (std::vector<T *> *vec) 
 {
 	typename std::vector<T *>::iterator i;
@@ -34,9 +34,9 @@
 	}
 	vec->clear ();
 }
-#endif // _CPP_VECTOR || __SGI_STL_VECTOR
+#endif // _CPP_VECTOR || _GLIBCXX_VECTOR || __SGI_STL_VECTOR
 
-#if defined(_CPP_MAP) || defined(__SGI_STL_MAP)
+#if defined(_CPP_MAP) || defined(_GLIBCXX_MAP) || defined(__SGI_STL_MAP)
 template<class K, class T> void map_delete (std::map<K, T *> *m) 
 {
 	typename std::map<K, T *>::iterator i;
@@ -46,9 +46,9 @@
 	}
 	m->clear ();
 }
-#endif // _CPP_MAP || __SGI_STL_MAP
+#endif // _CPP_MAP || _GLIBCXX_MAP || __SGI_STL_MAP
 
-#if defined(_CPP_LIST) || defined(__SGI_STL_LIST)
+#if defined(_CPP_LIST) || defined(_GLIBCXX_LIST) || defined(__SGI_STL_LIST)
 template<class T> void list_delete (std::list<T *> *l) 
 {
 	typename std::list<T *>::iterator i;
@@ -59,9 +59,9 @@
 
 	l->clear ();
 }
-#endif // _CPP_LIST || __SGI_STL_LIST
+#endif // _CPP_LIST || _GLIBCXX_LIST || __SGI_STL_LIST
 
-#if defined(_CPP_SLIST) || defined(__SGI_STL_SLIST)
+#if defined(_CPP_SLIST) || defined(_GLIBCXX_SLIST) || defined(__SGI_STL_SLIST)
 template<class T> void slist_delete (std::slist<T *> *l) 
 {
 	typename std::slist<T *>::iterator i;
@@ -72,9 +72,9 @@
 
 	l->clear ();
 }
-#endif // _CPP_SLIST || __SGI_STL_SLIST
+#endif // _CPP_SLIST || _GLIBCXX_SLIST || __SGI_STL_SLIST
 
-#if defined(_CPP_SET) || defined(__SGI_STL_SET)
+#if defined(_CPP_SET) || defined(_GLIBCXX_SET) || defined(__SGI_STL_SET)
 template<class T> void set_delete (std::set<T *> *sset) 
 {
 	typename std::set<T *>::iterator i;
@@ -84,6 +84,6 @@
 	}
 	sset->erase (sset->begin(), sset->end());
 }
-#endif // _CPP_SET || __SGI_STL_SET
+#endif // _CPP_SET || _GLIBCXX_SET || __SGI_STL_SET
 
 #endif // __libmisc_stl_delete_h__
diff -ur ardour-0.9beta16.1.old/libs/sigc++/sigc++/class_slot.h ardour-0.9beta16.1/libs/sigc++/sigc++/class_slot.h
--- ardour-0.9beta16.1.old/libs/sigc++/sigc++/class_slot.h	2003-06-17 05:56:27.000000000 +0200
+++ ardour-0.9beta16.1/libs/sigc++/sigc++/class_slot.h	2004-06-14 22:45:45.835708240 +0200
@@ -54,7 +54,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot0_<R,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -90,7 +90,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot1_<R,P1,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -126,7 +126,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot2_<R,P1,P2,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -162,7 +162,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot3_<R,P1,P2,P3,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -198,7 +198,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot4_<R,P1,P2,P3,P4,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -234,7 +234,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot5_<R,P1,P2,P3,P4,P5,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -270,7 +270,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot6_<R,P1,P2,P3,P4,P5,P6,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
@@ -306,7 +306,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&ObjectSlot7_<R,P1,P2,P3,P4,P5,P6,P7,Obj>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
diff -ur ardour-0.9beta16.1.old/libs/sigc++/sigc++/macros/class_slot.h.m4 ardour-0.9beta16.1/libs/sigc++/sigc++/macros/class_slot.h.m4
--- ardour-0.9beta16.1.old/libs/sigc++/sigc++/macros/class_slot.h.m4	2003-06-17 05:51:10.000000000 +0200
+++ ardour-0.9beta16.1/libs/sigc++/sigc++/macros/class_slot.h.m4	2004-06-14 22:45:39.906609600 +0200
@@ -77,7 +77,7 @@
       if (!obj) return 0;
       SlotData* tmp=manage(new SlotData());
       CallData &data=reinterpret_cast<CallData&>(tmp->data_);
-      data.callback=&callback;
+      data.callback=&[ObjectSlot]NUM($1)_<LIST(R,1,ARG_TYPE($1),[$1],Obj,1)>::callback;
       data.obj=&obj;
       data.func=(Func)func;
       return tmp;
