diff --git a/samples/PortSD4AddInToSD5/WorkbenchSingletonIssueProvider.cs b/samples/PortSD4AddInToSD5/WorkbenchSingletonIssueProvider.cs
index 3f0a192660..ab6caca189 100644
--- a/samples/PortSD4AddInToSD5/WorkbenchSingletonIssueProvider.cs
+++ b/samples/PortSD4AddInToSD5/WorkbenchSingletonIssueProvider.cs
@@ -53,6 +53,20 @@ namespace PortSD4AddInToSD5
 								script.Replace(mre, new IdentifierExpression("SD").Member("StatusBar"));
 							});
 						break;
+					case "ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.InvokeRequired":
+						yield return Issue(
+							mre,
+							script => {
+								script.Replace(mre, new IdentifierExpression("SD").Member("MainThread").Member("InvokeRequired"));
+							});
+						break;
+					case "ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainWindow":
+						yield return Issue(
+							mre,
+							script => {
+								script.Replace(mre, new IdentifierExpression("SD").Member("Workbench").Member("MainWindow"));
+							});
+						break;
 				}
 			}
 			foreach (var invocationExpression in context.RootNode.Descendants.OfType<InvocationExpression>()) {
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj
index c6fd21ccc2..23cd725795 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj
@@ -105,6 +105,7 @@
     <Compile Include="Src\ContextActions\GoToEntityAction.cs" />
     <Compile Include="Src\DocumentSequence.cs" />
     <Compile Include="Src\EnhancedScrollBar.cs" />
+    <Compile Include="Src\MultiHighlighter.cs" />
     <Compile Include="Src\Snippets\CodeSnippetComparer.cs" />
     <Compile Include="Src\Utils.cs" />
     <Compile Include="Src\XmlDoc\DocumentationUIBuilder.cs" />
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
index 98425c3d30..c59903827e 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs
@@ -17,7 +17,6 @@ using ICSharpCode.NRefactory.Editor;
 using ICSharpCode.SharpDevelop;
 using ICSharpCode.SharpDevelop.Editor.Bookmarks;
 using ICSharpCode.SharpDevelop.Editor;
-using ICSharpCode.SharpDevelop.Editor.Bookmarks;
 using ICSharpCode.SharpDevelop.Gui;
 using ICSharpCode.SharpDevelop.Parser;
 using ICSharpCode.SharpDevelop.Project;
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
index 88459214a9..3439510182 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
@@ -27,7 +27,6 @@ using ICSharpCode.NRefactory.Editor;
 using ICSharpCode.SharpDevelop;
 using ICSharpCode.SharpDevelop.Editor.Bookmarks;
 using ICSharpCode.SharpDevelop.Editor;
-using ICSharpCode.SharpDevelop.Editor.Bookmarks;
 using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
 using ICSharpCode.SharpDevelop.Parser;
 using ICSharpCode.SharpDevelop.Widgets.MyersDiff;
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DiffControl.xaml.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DiffControl.xaml.cs
index c0223f4ce6..bb22730d48 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DiffControl.xaml.cs
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/DiffControl.xaml.cs
@@ -28,8 +28,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
 		{
 			InitializeComponent();
 			
-			revertButton.Content = PresentationResourceService.GetImage("Icons.16x16.UndoIcon");
-			copyButton.Content = PresentationResourceService.GetImage("Icons.16x16.CopyIcon");
+			revertButton.Content = SD.ResourceService.GetImage("Icons.16x16.UndoIcon").CreateImage();
+			copyButton.Content = SD.ResourceService.GetImage("Icons.16x16.CopyIcon").CreateImage();
 		}
 		
 		void CopyButtonClick(object sender, RoutedEventArgs e)
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/MultiHighlighter.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/MultiHighlighter.cs
new file mode 100644
index 0000000000..9dfe3e7ffd
--- /dev/null
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/MultiHighlighter.cs
@@ -0,0 +1,119 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Collections.Generic;
+using ICSharpCode.AvalonEdit.Highlighting;
+using ICSharpCode.NRefactory.Editor;
+
+namespace ICSharpCode.AvalonEdit.AddIn
+{
+	public class MultiHighlighter : IHighlighter
+	{
+		readonly IHighlighter[] nestedHighlighters;
+		readonly IDocument document;
+		
+		public MultiHighlighter(IDocument document, params IHighlighter[] nestedHighlighters)
+		{
+			if (document == null)
+				throw new ArgumentNullException("document");
+			if (nestedHighlighters == null)
+				throw new ArgumentNullException("additionalHighlighters");
+
+			foreach (var highlighter in nestedHighlighters) {
+				if (highlighter == null)
+					throw new ArgumentException("nulls not allowed!");
+				if (document != highlighter.Document)
+					throw new ArgumentException("all highlighters must be assigned to the same document!");
+			}
+			
+			this.nestedHighlighters = nestedHighlighters;
+			this.document = document;
+		}
+		
+		public event HighlightingStateChangedEventHandler HighlightingStateChanged {
+			add {
+				foreach (var highlighter in nestedHighlighters) {
+					highlighter.HighlightingStateChanged += value;
+				}
+			}
+			remove {
+				foreach (var highlighter in nestedHighlighters) {
+					highlighter.HighlightingStateChanged -= value;
+				}
+			}
+		}
+		
+		public IDocument Document {
+			get {
+				return document;
+			}
+		}
+		
+		public HighlightingColor DefaultTextColor {
+			get {
+				if (nestedHighlighters.Length > 0)
+					return nestedHighlighters[0].DefaultTextColor;
+				return null;
+			}
+		}
+		
+		public IEnumerable<HighlightingColor> GetColorStack(int lineNumber)
+		{
+			List<HighlightingColor> list = new List<HighlightingColor>();
+			for (int i = nestedHighlighters.Length - 1; i >= 0; i--) {
+				var s = nestedHighlighters[i].GetColorStack(lineNumber);
+				if (s != null)
+					list.AddRange(s);
+			}
+			return list;
+		}
+		
+		public HighlightedLine HighlightLine(int lineNumber)
+		{
+			HighlightedLine line = new HighlightedLine(document, document.GetLineByNumber(lineNumber));
+			foreach (IHighlighter h in nestedHighlighters) {
+				line.MergeWith(h.HighlightLine(lineNumber));
+			}
+			return line;
+		}
+		
+		public void UpdateHighlightingState(int lineNumber)
+		{
+			foreach (var h in nestedHighlighters) {
+				h.UpdateHighlightingState(lineNumber);
+			}
+		}
+		
+		public void BeginHighlighting()
+		{
+			foreach (var h in nestedHighlighters) {
+				h.BeginHighlighting();
+			}
+		}
+		
+		public void EndHighlighting()
+		{
+			foreach (var h in nestedHighlighters) {
+				h.EndHighlighting();
+			}
+		}
+		
+		public HighlightingColor GetNamedColor(string name)
+		{
+			foreach (var h in nestedHighlighters) {
+				var color = h.GetNamedColor(name);
+				if (color != null)
+					return color;
+			}
+			return null;
+		}
+		
+		public void Dispose()
+		{
+			foreach (var h in nestedHighlighters) {
+				h.Dispose();
+			}
+		}
+	}
+}
diff --git a/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/HistoryViewPanel.cs b/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/HistoryViewPanel.cs
index d8c0707842..d7fe10344c 100644
--- a/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/HistoryViewPanel.cs
+++ b/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/HistoryViewPanel.cs
@@ -7,6 +7,7 @@ using System.Threading;
 using System.Windows.Forms;
 
 using ICSharpCode.Core;
+using ICSharpCode.SharpDevelop;
 using ICSharpCode.SharpDevelop.Gui;
 
 namespace ICSharpCode.Svn
diff --git a/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/InfoPanel.cs b/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/InfoPanel.cs
index 180eae00de..a0f3b0cd33 100644
--- a/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/InfoPanel.cs
+++ b/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/InfoPanel.cs
@@ -9,6 +9,7 @@ using System.Windows.Forms;
 
 using ICSharpCode.Core;
 using ICSharpCode.Core.WinForms;
+using ICSharpCode.SharpDevelop;
 using ICSharpCode.SharpDevelop.Gui;
 
 namespace ICSharpCode.Svn
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightedLine.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightedLine.cs
index 9dc21801b6..79bac31a0e 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightedLine.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightedLine.cs
@@ -259,6 +259,9 @@ namespace ICSharpCode.AvalonEdit.Highlighting
 		}
 		#endregion
 		
+		/// <summary>
+		/// Creates a <see cref="HighlightedInlineBuilder"/> that stores the text and highlighting of this line.
+		/// </summary>
 		public HighlightedInlineBuilder ToInlineBuilder()
 		{
 			HighlightedInlineBuilder builder = new HighlightedInlineBuilder(Document.GetText(DocumentLine));
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightingColor.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightingColor.cs
index 54ec5117e4..ec8fc39670 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightingColor.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightingColor.cs
@@ -17,13 +17,6 @@ namespace ICSharpCode.AvalonEdit.Highlighting
 	[Serializable]
 	public class HighlightingColor : ISerializable
 	{
-		[NonSerialized]
-		public static readonly HighlightingColor DefaultColor = new HighlightingColor {
-			Background = new SimpleHighlightingBrush(Brushes.White),
-			Foreground = new SimpleHighlightingBrush(Brushes.Black),
-			Name = "<default>"
-		};
-		
 		/// <summary>
 		/// Gets/Sets the name of the color.
 		/// </summary>
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/IHighlighter.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/IHighlighter.cs
index d88820dd28..1252d1147f 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/IHighlighter.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/IHighlighter.cs
@@ -91,115 +91,6 @@ namespace ICSharpCode.AvalonEdit.Highlighting
 		HighlightingColor DefaultTextColor { get; }
 	}
 	
-	public class MultiHighlighter : IHighlighter
-	{
-		readonly IHighlighter[] nestedHighlighters;
-		readonly IDocument document;
-		
-		public MultiHighlighter(IDocument document, params IHighlighter[] nestedHighlighters)
-		{
-			if (document == null)
-				throw new ArgumentNullException("document");
-			if (nestedHighlighters == null)
-				throw new ArgumentNullException("additionalHighlighters");
-
-			foreach (var highlighter in nestedHighlighters) {
-				if (highlighter == null)
-					throw new ArgumentException("nulls not allowed!");
-				if (document != highlighter.Document)
-					throw new ArgumentException("all highlighters must be assigned to the same document!");
-			}
-			
-			this.nestedHighlighters = nestedHighlighters;
-			this.document = document;
-		}
-		
-		public event HighlightingStateChangedEventHandler HighlightingStateChanged {
-			add {
-				foreach (var highlighter in nestedHighlighters) {
-					highlighter.HighlightingStateChanged += value;
-				}
-			}
-			remove {
-				foreach (var highlighter in nestedHighlighters) {
-					highlighter.HighlightingStateChanged -= value;
-				}
-			}
-		}
-		
-		public IDocument Document {
-			get {
-				return document;
-			}
-		}
-		
-		public HighlightingColor DefaultTextColor {
-			get {
-				if (nestedHighlighters.Length > 0)
-					return nestedHighlighters[0].DefaultTextColor;
-				return HighlightingColor.DefaultColor;
-			}
-		}
-		
-		public IEnumerable<HighlightingColor> GetColorStack(int lineNumber)
-		{
-			List<HighlightingColor> list = new List<HighlightingColor>();
-			for (int i = nestedHighlighters.Length - 1; i >= 0; i--) {
-				var s = nestedHighlighters[i].GetColorStack(lineNumber);
-				if (s != null)
-					list.AddRange(s);
-			}
-			return list;
-		}
-		
-		public HighlightedLine HighlightLine(int lineNumber)
-		{
-			HighlightedLine line = new HighlightedLine(document, document.GetLineByNumber(lineNumber));
-			foreach (IHighlighter h in nestedHighlighters) {
-				line.MergeWith(h.HighlightLine(lineNumber));
-			}
-			return line;
-		}
-		
-		public void UpdateHighlightingState(int lineNumber)
-		{
-			foreach (var h in nestedHighlighters) {
-				h.UpdateHighlightingState(lineNumber);
-			}
-		}
-		
-		public void BeginHighlighting()
-		{
-			foreach (var h in nestedHighlighters) {
-				h.BeginHighlighting();
-			}
-		}
-		
-		public void EndHighlighting()
-		{
-			foreach (var h in nestedHighlighters) {
-				h.EndHighlighting();
-			}
-		}
-		
-		public HighlightingColor GetNamedColor(string name)
-		{
-			foreach (var h in nestedHighlighters) {
-				var color = h.GetNamedColor(name);
-				if (color != null)
-					return color;
-			}
-			return null;
-		}
-		
-		public void Dispose()
-		{
-			foreach (var h in nestedHighlighters) {
-				h.Dispose();
-			}
-		}
-	}
-	
 	/// <summary>
 	/// Event handler for <see cref="IHighlighter.HighlightingStateChanged"/>
 	/// </summary>
diff --git a/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs b/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs
index fef0747e9b..0774098d2c 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs
@@ -251,7 +251,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		public void AddCategory(MessageViewCategory category)
 		{
 			if (WorkbenchSingleton.InvokeRequired) {
-				SD.MainThread.InvokeAsync(() => (Action<MessageViewCategory>)AddCategory(category)).FireAndForget();
+				SD.MainThread.InvokeAsync(() => AddCategory(category)).FireAndForget();
 				return;
 			}
 			messageCategories.Add(category);
diff --git a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
index 08448d0358..9befe036e2 100644
--- a/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
+++ b/src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
@@ -26,6 +26,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// <summary>
 		/// Gets the main form. Returns null in unit-testing mode.
 		/// </summary>
+		[Obsolete("Use SD.WinForms.MainWin32Window instead")]
 		public static IWin32Window MainWin32Window {
 			get {
 				if (workbench != null) {
@@ -38,6 +39,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// <summary>
 		/// Gets the main window. Returns null in unit-testing mode.
 		/// </summary>
+		[Obsolete("Use SD.Workbench.MainWindow instead")]
 		public static Window MainWindow {
 			get {
 				if (workbench != null) {
@@ -50,6 +52,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// <summary>
 		/// Gets the workbench. Returns null in unit-testing mode.
 		/// </summary>
+		[Obsolete("Use SD.Workbench instead")]
 		public static IWorkbench Workbench {
 			get {
 				return workbench;
@@ -63,7 +66,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 			}
 		}
 		
-		public static void InitializeWorkbench(IWorkbench workbench, IWorkbenchLayout layout)
+		internal static void InitializeWorkbench(IWorkbench workbench, IWorkbenchLayout layout)
 		{
 			WorkbenchSingleton.workbench = workbench;
 			SD.Services.AddService(typeof(IWorkbench), workbench);
@@ -107,7 +110,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// Runs workbench cleanup.
 		/// Is called by ICSharpCode.SharpDevelop.Sda and should not be called manually!
 		/// </summary>
-		public static void OnWorkbenchUnloaded()
+		internal static void OnWorkbenchUnloaded()
 		{
 			if (!Project.ProjectService.IsClosingCanceled()) {
 				Project.ProjectService.CloseSolution();
@@ -132,6 +135,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// For performance reasons, the thread check is only done in debug builds.
 		/// </summary>
 		[Conditional("DEBUG")]
+		[Obsolete("Use SD.MainThread.VerifyAccess() instead")]
 		internal static void DebugAssertMainThread()
 		{
 			SD.MainThread.VerifyAccess();
@@ -140,6 +144,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// <summary>
 		/// Throws an exception if the current thread is not the main thread.
 		/// </summary>
+		[Obsolete("Use SD.MainThread.VerifyAccess() instead")]
 		public static void AssertMainThread()
 		{
 			if (InvokeRequired) {
@@ -154,6 +159,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// operation, which can result in a dead-lock when the main thread waits for a lock
 		/// held by this thread!
 		/// </summary>
+		[Obsolete("Use SD.MainThread.InvokeIfRequired() instead")]
 		public static R SafeThreadFunction<R>(Func<R> method)
 		{
 			return SD.MainThread.InvokeIfRequired(method);
@@ -164,6 +170,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// operation, which can result in a dead-lock when the main thread waits for a lock
 		/// held by this thread!
 		/// </summary>
+		[Obsolete("Use SD.MainThread.InvokeIfRequired() instead")]
 		public static R SafeThreadFunction<A, R>(Func<A, R> method, A arg1)
 		{
 			return SD.MainThread.InvokeIfRequired(() => method(arg1));
@@ -174,6 +181,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// operation, which can result in a dead-lock when the main thread waits for a lock
 		/// held by this thread!
 		/// </summary>
+		[Obsolete("Use SD.MainThread.InvokeIfRequired() instead")]
 		public static void SafeThreadCall(Action method)
 		{
 			SD.MainThread.InvokeIfRequired(method);
@@ -184,6 +192,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// operation, which can result in a dead-lock when the main thread waits for a lock
 		/// held by this thread!
 		/// </summary>
+		[Obsolete("Use SD.MainThread.InvokeIfRequired() instead")]
 		public static void SafeThreadCall<A>(Action<A> method, A arg1)
 		{
 			SD.MainThread.InvokeIfRequired(() => method(arg1));
@@ -194,6 +203,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// operation, which can result in a dead-lock when the main thread waits for a lock
 		/// held by this thread!
 		/// </summary>
+		[Obsolete("Use SD.MainThread.InvokeIfRequired() instead")]
 		public static void SafeThreadCall<A, B>(Action<A, B> method, A arg1, B arg2)
 		{
 			SD.MainThread.InvokeIfRequired(() => method(arg1, arg2));
@@ -204,6 +214,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// operation, which can result in a dead-lock when the main thread waits for a lock
 		/// held by this thread!
 		/// </summary>
+		[Obsolete("Use SD.MainThread.InvokeIfRequired() instead")]
 		public static void SafeThreadCall<A, B, C>(Action<A, B, C> method, A arg1, B arg2, C arg3)
 		{
 			SD.MainThread.InvokeIfRequired(() => method(arg1, arg2, arg3));
@@ -212,6 +223,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// <summary>
 		/// Makes a call GUI threadsafe without waiting for the returned value.
 		/// </summary>
+		[Obsolete("Use SD.MainThread.InvokeAsync().FireAndForget() instead")]
 		public static void SafeThreadAsyncCall(Action method)
 		{
 			SD.MainThread.InvokeAsync(method).FireAndForget();
@@ -220,6 +232,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// <summary>
 		/// Makes a call GUI threadsafe without waiting for the returned value.
 		/// </summary>
+		[Obsolete("Use SD.MainThread.InvokeAsync().FireAndForget() instead")]
 		public static void SafeThreadAsyncCall<A>(Action<A> method, A arg1)
 		{
 			SD.MainThread.InvokeAsync(() => method(arg1)).FireAndForget();
@@ -228,6 +241,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// <summary>
 		/// Makes a call GUI threadsafe without waiting for the returned value.
 		/// </summary>
+		[Obsolete("Use SD.MainThread.InvokeAsync().FireAndForget() instead")]
 		public static void SafeThreadAsyncCall<A, B>(Action<A, B> method, A arg1, B arg2)
 		{
 			SD.MainThread.InvokeAsync(() => method(arg1, arg2)).FireAndForget();
@@ -236,6 +250,7 @@ namespace ICSharpCode.SharpDevelop.Gui
 		/// <summary>
 		/// Makes a call GUI threadsafe without waiting for the returned value.
 		/// </summary>
+		[Obsolete("Use SD.MainThread.InvokeAsync().FireAndForget() instead")]
 		public static void SafeThreadAsyncCall<A, B, C>(Action<A, B, C> method, A arg1, B arg2, C arg3)
 		{
 			SD.MainThread.InvokeAsync(() => method(arg1, arg2, arg3)).FireAndForget();