Removed compat files to complete the big refactor
Removed compat files to complete the big refactor

--- a/Compat/AppLauncherExtensions.cs
+++ /dev/null
@@ -1,123 +1,1 @@
-// ToadicusTools
-//
-// AppLauncherTools.cs
-//
-// Copyright © 2014-2015, toadicus
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice,
-//    this list of conditions and the following disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above copyright notice,
-//    this list of conditions and the following disclaimer in the documentation and/or other
-//    materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-using KSP;
-using System;
-using UnityEngine;
-
-namespace ToadicusTools
-{
-	public static class AppLauncherTools
-	{
-		/*
-		 * Squad's method signature for reference.
-		 * public static ApplicationLauncherButton AddModApplication(this ApplicationLauncher appLauncher,
-			RUIToggleButton.OnTrue onTrue,
-			RUIToggleButton.OnFalse onFalse,
-			RUIToggleButton.OnHover onHover,
-			RUIToggleButton.OnHoverOut onHoverOut,
-			RUIToggleButton.OnEnable onEnable,
-			RUIToggleButton.OnDisable onDisable,
-			ApplicationLauncher.AppScenes visibleInScenes,
-			Texture texture
-			)
-		*/
-
-		[Obsolete("Deprecated, please use method from Extensions.AppLauncherExtensions instead")]
-		public static ApplicationLauncherButton AddModApplication(this ApplicationLauncher appLauncher,
-			RUIToggleButton.OnTrue onTrue,
-			RUIToggleButton.OnFalse onFalse,
-			RUIToggleButton.OnHover onHover,
-			RUIToggleButton.OnHoverOut onHoverOut,
-			ApplicationLauncher.AppScenes visibleInScenes,
-			Texture texture
-		)
-		{
-			return Extensions.AppLauncherExtensions.AddModApplication(
-				appLauncher,
-				onTrue, onFalse,
-				onHover, onHoverOut,
-				visibleInScenes,
-				texture
-			);
-		}
-
-		[Obsolete("Deprecated, please use method from Extensions.AppLauncherExtensions instead")]
-		public static ApplicationLauncherButton AddModApplication(this ApplicationLauncher appLauncher,
-			RUIToggleButton.OnTrue onTrue,
-			RUIToggleButton.OnFalse onFalse,
-			RUIToggleButton.OnEnable onEnable,
-			RUIToggleButton.OnDisable onDisable,
-			ApplicationLauncher.AppScenes visibleInScenes,
-			Texture texture
-		)
-		{
-			return Extensions.AppLauncherExtensions.AddModApplication(
-				appLauncher,
-				onTrue, onFalse,
-				onEnable, onDisable,
-				visibleInScenes,
-				texture
-			);
-		}
-
-		[Obsolete("Deprecated, please use method from Extensions.AppLauncherExtensions instead")]
-		public static ApplicationLauncherButton AddModApplication(this ApplicationLauncher appLauncher,
-			RUIToggleButton.OnTrue onTrue,
-			RUIToggleButton.OnFalse onFalse,
-			ApplicationLauncher.AppScenes visibleInScenes,
-			Texture texture
-		)
-		{
-			return Extensions.AppLauncherExtensions.AddModApplication(
-				appLauncher,
-				onTrue, onFalse,
-				visibleInScenes,
-				texture
-			);
-		}
-
-		[Obsolete("Deprecated, please use method from Extensions.AppLauncherExtensions instead")]
-		public static ApplicationLauncherButton AddModApplication(this ApplicationLauncher appLauncher,
-			ApplicationLauncher.AppScenes visibleInScenes,
-			Texture texture
-		)
-		{
-			return Extensions.AppLauncherExtensions.AddModApplication(
-				appLauncher,
-				visibleInScenes,
-				texture
-			);
-		}
-
-		[Obsolete("Deprecated, please use method from Extensions.AppLauncherExtensions instead")]
-		public static ApplicationLauncher.AppScenes ToAppScenes(this GameScenes gameScene)
-		{
-			return Extensions.AppLauncherExtensions.ToAppScenes(gameScene);
-		}
-	}
-}
-
-

file:a/Compat/ClassStubs.cs (deleted)
--- a/Compat/ClassStubs.cs
+++ /dev/null
@@ -1,41 +1,1 @@
-// ToadicusTools
-//
-// ClassStubs.cs
-//
-// Copyright © 2015, toadicus
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice,
-//    this list of conditions and the following disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above copyright notice,
-//    this list of conditions and the following disclaimer in the documentation and/or other
-//    materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-using System;
-using System.Collections.Generic;
-using UnityEngine;
-using Table = ToadicusTools.GUIUtils.Table;
-
-namespace ToadicusTools
-{
-	[Obsolete("Deprecated; use ToadicusTools.DebugLogger instead")]
-	public class SIFormatProvider : Text.SIFormatProvider
-	{
-		new public static readonly SIFormatProvider SIFormatter = new SIFormatProvider();
-	}
-
-	public class DebugPartModule : DebugTools.DebugPartModule {}
-}
-

--- a/Compat/ToolbarWrapper.cs
+++ /dev/null
@@ -1,871 +1,1 @@
-/*
-Copyright (c) 2013-2014, Maik Schreiber
-All rights reserved.
 
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
-   list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
-   this list of conditions and the following disclaimer in the documentation
-   and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using UnityEngine;
-
-#pragma warning disable 0618
-
-namespace ToadicusTools {
-
-
-
-	/**********************************************************\
-	*          --- DO NOT EDIT BELOW THIS COMMENT ---          *
-	*                                                          *
-	* This file contains classes and interfaces to use the     *
-	* Toolbar Plugin without creating a hard dependency on it. *
-	*                                                          *
-	* There is nothing in this file that needs to be edited    *
-	* by hand.                                                 *
-	*                                                          *
-	*          --- DO NOT EDIT BELOW THIS COMMENT ---          *
-	\**********************************************************/
-
-
-
-	/// <summary>
-	/// The global tool bar manager.
-	/// </summary>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public partial class ToolbarManager : IToolbarManager {
-		/// <summary>
-		/// Whether the Toolbar Plugin is available.
-		/// </summary>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public static bool ToolbarAvailable {
-			get {
-				if (toolbarAvailable == null) {
-					toolbarAvailable = Instance != null;
-				}
-				return (bool) toolbarAvailable;
-			}
-		}
-
-		/// <summary>
-		/// The global tool bar manager instance.
-		/// </summary>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public static IToolbarManager Instance {
-			get {
-				if ((toolbarAvailable != false) && (instance_ == null)) {
-					Type type = ToolbarTypes.getType("Toolbar.ToolbarManager");
-					if (type != null) {
-						object realToolbarManager = ToolbarTypes.getStaticProperty(type, "Instance").GetValue(null, null);
-						instance_ = new ToolbarManager(realToolbarManager);
-					}
-				}
-				return instance_;
-			}
-		}
-	}
-
-	#region interfaces
-
-	/// <summary>
-	/// A toolbar manager.
-	/// </summary>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public interface IToolbarManager {
-		/// <summary>
-		/// Adds a new button.
-		/// </summary>
-		/// <remarks>
-		/// To replace an existing button, just add a new button using the old button's namespace and ID.
-		/// Note that the new button will inherit the screen position of the old button.
-		/// </remarks>
-		/// <param name="ns">The new button's namespace. This is usually the plugin's name. Must not include special characters like '.'</param>
-		/// <param name="id">The new button's ID. This ID must be unique across all buttons in the namespace. Must not include special characters like '.'</param>
-		/// <returns>The button created.</returns>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		IButton add(string ns, string id);
-	}
-
-	/// <summary>
-	/// Represents a clickable button.
-	/// </summary>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public interface IButton {
-		/// <summary>
-		/// The text displayed on the button. Set to null to hide text.
-		/// </summary>
-		/// <remarks>
-		/// The text can be changed at any time to modify the button's appearance. Note that since this will also
-		/// modify the button's size, this feature should be used sparingly, if at all.
-		/// </remarks>
-		/// <seealso cref="TexturePath"/>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		string Text {
-			set;
-			get;
-		}
-
-		/// <summary>
-		/// The color the button text is displayed with. Defaults to Color.white.
-		/// </summary>
-		/// <remarks>
-		/// The text color can be changed at any time to modify the button's appearance.
-		/// </remarks>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		Color TextColor {
-			set;
-			get;
-		}
-
-		/// <summary>
-		/// The path of a texture file to display an icon on the button. Set to null to hide icon.
-		/// </summary>
-		/// <remarks>
-		/// <para>
-		/// A texture path on a button will have precedence over text. That is, if both text and texture path
-		/// have been set on a button, the button will show the texture, not the text.
-		/// </para>
-		/// <para>
-		/// The texture size must not exceed 24x24 pixels.
-		/// </para>
-		/// <para>
-		/// The texture path must be relative to the "GameData" directory, and must not specify a file name suffix.
-		/// Valid example: MyAddon/Textures/icon_mybutton
-		/// </para>
-		/// <para>
-		/// The texture path can be changed at any time to modify the button's appearance.
-		/// </para>
-		/// </remarks>
-		/// <seealso cref="Text"/>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		string TexturePath {
-			set;
-			get;
-		}
-
-		/// <summary>
-		/// The button's tool tip text. Set to null if no tool tip is desired.
-		/// </summary>
-		/// <remarks>
-		/// Tool Tip Text Should Always Use Headline Style Like This.
-		/// </remarks>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		string ToolTip {
-			set;
-			get;
-		}
-
-		/// <summary>
-		/// Whether this button is currently visible or not. Can be used in addition to or as a replacement for <see cref="Visibility"/>.
-		/// </summary>
-		/// <remarks>
-		/// Setting this property to true does not affect the player's ability to hide the button using the configuration.
-		/// Conversely, setting this property to false does not enable the player to show the button using the configuration.
-		/// </remarks>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		bool Visible {
-			set;
-			get;
-		}
-
-		/// <summary>
-		/// Determines this button's visibility. Can be used in addition to or as a replacement for <see cref="Visible"/>.
-		/// </summary>
-		/// <remarks>
-		/// The return value from IVisibility.Visible is subject to the same rules as outlined for
-		/// <see cref="Visible"/>.
-		/// </remarks>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		IVisibility Visibility {
-			set;
-			get;
-		}
-
-		/// <summary>
-		/// Whether this button is currently effectively visible or not. This is a combination of
-		/// <see cref="Visible"/> and <see cref="Visibility"/>.
-		/// </summary>
-		/// <remarks>
-		/// Note that the toolbar is not visible in certain game scenes, for example the loading screens. This property
-		/// does not reflect button invisibility in those scenes. In addition, this property does not reflect the
-		/// player's configuration of the button's visibility.
-		/// </remarks>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		bool EffectivelyVisible {
-			get;
-		}
-
-		/// <summary>
-		/// Whether this button is currently enabled (clickable) or not. This does not affect the player's ability to
-		/// position the button on their toolbar.
-		/// </summary>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		bool Enabled {
-			set;
-			get;
-		}
-
-		/// <summary>
-		/// Whether this button is currently "important." Set to false to return to normal button behaviour.
-		/// </summary>
-		/// <remarks>
-		/// <para>
-		/// This can be used to temporarily force the button to be shown on screen regardless of the toolbar being
-		/// currently in auto-hidden mode. For example, a button that signals the arrival of a private message in
-		/// a chat room could mark itself as "important" as long as the message has not been read.
-		/// </para>
-		/// <para>
-		/// Setting this property does not change the appearance of the button. Use <see cref="TexturePath"/> to
-		/// change the button's icon.
-		/// </para>
-		/// <para>
-		/// Setting this property to true does not affect the player's ability to hide the button using the
-		/// configuration.
-		/// </para>
-		/// <para>
-		/// This feature should be used only sparingly, if at all, since it forces the button to be displayed on
-		/// screen even when it normally wouldn't.
-		/// </para>
-		/// </remarks>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		bool Important {
-			set;
-			get;
-		}
-
-		/// <summary>
-		/// A drawable that is tied to the current button. This can be anything from a popup menu to
-		/// an informational window. Set to null to hide the drawable.
-		/// </summary>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		IDrawable Drawable {
-			set;
-			get;
-		}
-
-		/// <summary>
-		/// Event handler that can be registered with to receive "on click" events.
-		/// </summary>
-		/// <example>
-		/// <code>
-		/// IButton button = ...
-		/// button.OnClick += (e) => {
-		///     Debug.Log("button clicked, mouseButton: " + e.MouseButton);
-		/// };
-		/// </code>
-		/// </example>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		event ClickHandler OnClick;
-
-		/// <summary>
-		/// Event handler that can be registered with to receive "on mouse enter" events.
-		/// </summary>
-		/// <example>
-		/// <code>
-		/// IButton button = ...
-		/// button.OnMouseEnter += (e) => {
-		///     Debug.Log("mouse entered button");
-		/// };
-		/// </code>
-		/// </example>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		event MouseEnterHandler OnMouseEnter;
-
-		/// <summary>
-		/// Event handler that can be registered with to receive "on mouse leave" events.
-		/// </summary>
-		/// <example>
-		/// <code>
-		/// IButton button = ...
-		/// button.OnMouseLeave += (e) => {
-		///     Debug.Log("mouse left button");
-		/// };
-		/// </code>
-		/// </example>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		event MouseLeaveHandler OnMouseLeave;
-
-		/// <summary>
-		/// Permanently destroys this button so that it is no longer displayed.
-		/// Should be used when a plugin is stopped to remove leftover buttons.
-		/// </summary>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		void Destroy();
-	}
-
-	/// <summary>
-	/// A drawable that is tied to a particular button. This can be anything from a popup menu
-	/// to an informational window.
-	/// </summary>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public interface IDrawable {
-		/// <summary>
-		/// Update any information. This is called once per frame.
-		/// </summary>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		void Update();
-
-		/// <summary>
-		/// Draws GUI widgets for this drawable. This is the equivalent to the OnGUI() message in
-		/// <see cref="MonoBehaviour"/>.
-		/// </summary>
-		/// <remarks>
-		/// The drawable will be positioned near its parent toolbar according to the drawable's current
-		/// width/height.
-		/// </remarks>
-		/// <param name="position">The left/top position of where to draw this drawable.</param>
-		/// <returns>The current width/height of this drawable.</returns>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		Vector2 Draw(Vector2 position);
-	}
-
-	#endregion
-
-	#region events
-
-	/// <summary>
-	/// Event describing a click on a button.
-	/// </summary>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public partial class ClickEvent : EventArgs {
-		/// <summary>
-		/// The button that has been clicked.
-		/// </summary>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public readonly IButton Button;
-
-		/// <summary>
-		/// The mouse button which the button was clicked with.
-		/// </summary>
-		/// <remarks>
-		/// Is 0 for left mouse button, 1 for right mouse button, and 2 for middle mouse button.
-		/// </remarks>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public readonly int MouseButton;
-	}
-
-	/// <summary>
-	/// An event handler that is invoked whenever a button has been clicked.
-	/// </summary>
-	/// <param name="e">An event describing the button click.</param>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public delegate void ClickHandler(ClickEvent e);
-
-	/// <summary>
-	/// Event describing the mouse pointer moving about a button.
-	/// </summary>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public abstract partial class MouseMoveEvent {
-		/// <summary>
-		/// The button in question.
-		/// </summary>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public readonly IButton button;
-	}
-
-	/// <summary>
-	/// Event describing the mouse pointer entering a button's area.
-	/// </summary>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public partial class MouseEnterEvent : MouseMoveEvent {
-	}
-
-	/// <summary>
-	/// Event describing the mouse pointer leaving a button's area.
-	/// </summary>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public partial class MouseLeaveEvent : MouseMoveEvent {
-	}
-
-	/// <summary>
-	/// An event handler that is invoked whenever the mouse pointer enters a button's area.
-	/// </summary>
-	/// <param name="e">An event describing the mouse pointer entering.</param>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public delegate void MouseEnterHandler(MouseEnterEvent e);
-
-	/// <summary>
-	/// An event handler that is invoked whenever the mouse pointer leaves a button's area.
-	/// </summary>
-	/// <param name="e">An event describing the mouse pointer leaving.</param>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public delegate void MouseLeaveHandler(MouseLeaveEvent e);
-
-	#endregion
-
-	#region visibility
-
-	/// <summary>
-	/// Determines visibility of a button.
-	/// </summary>
-	/// <seealso cref="IButton.Visibility"/>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public interface IVisibility {
-		/// <summary>
-		/// Whether a button is currently visible or not.
-		/// </summary>
-		/// <seealso cref="IButton.Visible"/>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		bool Visible {
-			get;
-		}
-	}
-
-	/// <summary>
-	/// Determines visibility of a button in relation to the currently running game scene.
-	/// </summary>
-	/// <example>
-	/// <code>
-	/// IButton button = ...
-	/// button.Visibility = new GameScenesVisibility(GameScenes.EDITOR, GameScenes.SPH);
-	/// </code>
-	/// </example>
-	/// <seealso cref="IButton.Visibility"/>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public class GameScenesVisibility : IVisibility {
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public bool Visible {
-			get {
-				return (bool) visibleProperty.GetValue(realGameScenesVisibility, null);
-			}
-		}
-
-		private object realGameScenesVisibility;
-		private PropertyInfo visibleProperty;
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public GameScenesVisibility(params GameScenes[] gameScenes) {
-			Type gameScenesVisibilityType = ToolbarTypes.getType("Toolbar.GameScenesVisibility");
-			realGameScenesVisibility = Activator.CreateInstance(gameScenesVisibilityType, new object[] { gameScenes });
-			visibleProperty = ToolbarTypes.getProperty(gameScenesVisibilityType, "Visible");
-		}
-	}
-
-	#endregion
-
-	#region drawable
-
-	/// <summary>
-	/// A drawable that draws a popup menu.
-	/// </summary>
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	public partial class PopupMenuDrawable : IDrawable {
-		/// <summary>
-		/// Event handler that can be registered with to receive "any menu option clicked" events.
-		/// </summary>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public event Action OnAnyOptionClicked {
-			add {
-				onAnyOptionClickedEvent.AddEventHandler(realPopupMenuDrawable, value);
-			}
-			remove {
-				onAnyOptionClickedEvent.RemoveEventHandler(realPopupMenuDrawable, value);
-			}
-		}
-
-		private object realPopupMenuDrawable;
-		private MethodInfo updateMethod;
-		private MethodInfo drawMethod;
-		private MethodInfo addOptionMethod;
-		private MethodInfo addSeparatorMethod;
-		private MethodInfo destroyMethod;
-		private EventInfo onAnyOptionClickedEvent;
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public PopupMenuDrawable() {
-			Type popupMenuDrawableType = ToolbarTypes.getType("Toolbar.PopupMenuDrawable");
-			realPopupMenuDrawable = Activator.CreateInstance(popupMenuDrawableType, null);
-			updateMethod = ToolbarTypes.getMethod(popupMenuDrawableType, "Update");
-			drawMethod = ToolbarTypes.getMethod(popupMenuDrawableType, "Draw");
-			addOptionMethod = ToolbarTypes.getMethod(popupMenuDrawableType, "AddOption");
-			addSeparatorMethod = ToolbarTypes.getMethod(popupMenuDrawableType, "AddSeparator");
-			destroyMethod = ToolbarTypes.getMethod(popupMenuDrawableType, "Destroy");
-			onAnyOptionClickedEvent = ToolbarTypes.getEvent(popupMenuDrawableType, "OnAnyOptionClicked");
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public void Update() {
-			updateMethod.Invoke(realPopupMenuDrawable, null);
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public Vector2 Draw(Vector2 position) {
-			return (Vector2) drawMethod.Invoke(realPopupMenuDrawable, new object[] { position });
-		}
-
-		/// <summary>
-		/// Adds a new option to the popup menu.
-		/// </summary>
-		/// <param name="text">The text of the option.</param>
-		/// <returns>A button that can be used to register clicks on the menu option.</returns>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public IButton AddOption(string text) {
-			object realButton = addOptionMethod.Invoke(realPopupMenuDrawable, new object[] { text });
-			return new Button(realButton, new ToolbarTypes());
-		}
-
-		/// <summary>
-		/// Adds a separator to the popup menu.
-		/// </summary>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public void AddSeparator() {
-			addSeparatorMethod.Invoke(realPopupMenuDrawable, null);
-		}
-
-		/// <summary>
-		/// Destroys this drawable. This must always be called before disposing of this drawable.
-		/// </summary>
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public void Destroy() {
-			destroyMethod.Invoke(realPopupMenuDrawable, null);
-		}
-	}
-
-	#endregion
-
-	#region private implementations
-
-	public partial class ToolbarManager : IToolbarManager {
-		private static bool? toolbarAvailable = null;
-		private static IToolbarManager instance_;
-
-		private object realToolbarManager;
-		private MethodInfo addMethod;
-		private Dictionary<object, IButton> buttons = new Dictionary<object, IButton>();
-		private ToolbarTypes types = new ToolbarTypes();
-
-		private ToolbarManager(object realToolbarManager) {
-			this.realToolbarManager = realToolbarManager;
-
-			addMethod = ToolbarTypes.getMethod(types.iToolbarManagerType, "add");
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public IButton add(string ns, string id) {
-			object realButton = addMethod.Invoke(realToolbarManager, new object[] { ns, id });
-			IButton button = new Button(realButton, types);
-			buttons.Add(realButton, button);
-			return button;
-		}
-	}
-
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	internal class Button : IButton {
-		private object realButton;
-		private ToolbarTypes types;
-		private Delegate realClickHandler;
-		private Delegate realMouseEnterHandler;
-		private Delegate realMouseLeaveHandler;
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal Button(object realButton, ToolbarTypes types) {
-			this.realButton = realButton;
-			this.types = types;
-
-			realClickHandler = attachEventHandler(types.button.onClickEvent, "clicked", realButton);
-			realMouseEnterHandler = attachEventHandler(types.button.onMouseEnterEvent, "mouseEntered", realButton);
-			realMouseLeaveHandler = attachEventHandler(types.button.onMouseLeaveEvent, "mouseLeft", realButton);
-		}
-
-		private Delegate attachEventHandler(EventInfo @event, string methodName, object realButton) {
-			MethodInfo method = GetType().GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance);
-			Delegate d = Delegate.CreateDelegate(@event.EventHandlerType, this, method);
-			@event.AddEventHandler(realButton, d);
-			return d;
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public string Text {
-			set {
-				types.button.textProperty.SetValue(realButton, value, null);
-			}
-			get {
-				return (string) types.button.textProperty.GetValue(realButton, null);
-			}
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public Color TextColor {
-			set {
-				types.button.textColorProperty.SetValue(realButton, value, null);
-			}
-			get {
-				return (Color) types.button.textColorProperty.GetValue(realButton, null);
-			}
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public string TexturePath {
-			set {
-				types.button.texturePathProperty.SetValue(realButton, value, null);
-			}
-			get {
-				return (string) types.button.texturePathProperty.GetValue(realButton, null);
-			}
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public string ToolTip {
-			set {
-				types.button.toolTipProperty.SetValue(realButton, value, null);
-			}
-			get {
-				return (string) types.button.toolTipProperty.GetValue(realButton, null);
-			}
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public bool Visible {
-			set {
-				types.button.visibleProperty.SetValue(realButton, value, null);
-			}
-			get {
-				return (bool) types.button.visibleProperty.GetValue(realButton, null);
-			}
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public IVisibility Visibility {
-			set {
-				object functionVisibility = null;
-				if (value != null) {
-					functionVisibility = Activator.CreateInstance(types.functionVisibilityType, new object[] { new Func<bool>(() => value.Visible) });
-				}
-				types.button.visibilityProperty.SetValue(realButton, functionVisibility, null);
-				visibility_ = value;
-			}
-			get {
-				return visibility_;
-			}
-		}
-		private IVisibility visibility_;
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public bool EffectivelyVisible {
-			get {
-				return (bool) types.button.effectivelyVisibleProperty.GetValue(realButton, null);
-			}
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public bool Enabled {
-			set {
-				types.button.enabledProperty.SetValue(realButton, value, null);
-			}
-			get {
-				return (bool) types.button.enabledProperty.GetValue(realButton, null);
-			}
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public bool Important {
-			set {
-				types.button.importantProperty.SetValue(realButton, value, null);
-			}
-			get {
-				return (bool) types.button.importantProperty.GetValue(realButton, null);
-			}
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public IDrawable Drawable {
-			set {
-				object functionDrawable = null;
-				if (value != null) {
-					functionDrawable = Activator.CreateInstance(types.functionDrawableType, new object[] {
-						new Action(() => value.Update()),
-						new Func<Vector2, Vector2>((pos) => value.Draw(pos))
-					});
-				}
-				types.button.drawableProperty.SetValue(realButton, functionDrawable, null);
-				drawable_ = value;
-			}
-			get {
-				return drawable_;
-			}
-		}
-		private IDrawable drawable_;
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public event ClickHandler OnClick;
-
-		private void clicked(object realEvent) {
-			if (OnClick != null) {
-				OnClick(new ClickEvent(realEvent, this));
-			}
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public event MouseEnterHandler OnMouseEnter;
-
-		private void mouseEntered(object realEvent) {
-			if (OnMouseEnter != null) {
-				OnMouseEnter(new MouseEnterEvent(this));
-			}
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public event MouseLeaveHandler OnMouseLeave;
-
-		private void mouseLeft(object realEvent) {
-			if (OnMouseLeave != null) {
-				OnMouseLeave(new MouseLeaveEvent(this));
-			}
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		public void Destroy() {
-			detachEventHandler(types.button.onClickEvent, realClickHandler, realButton);
-			detachEventHandler(types.button.onMouseEnterEvent, realMouseEnterHandler, realButton);
-			detachEventHandler(types.button.onMouseLeaveEvent, realMouseLeaveHandler, realButton);
-
-			types.button.destroyMethod.Invoke(realButton, null);
-		}
-
-		private void detachEventHandler(EventInfo @event, Delegate d, object realButton) {
-			@event.RemoveEventHandler(realButton, d);
-		}
-	}
-
-	public partial class ClickEvent : EventArgs {
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal ClickEvent(object realEvent, IButton button) {
-			Type type = realEvent.GetType();
-			Button = button;
-			MouseButton = (int) type.GetField("MouseButton", BindingFlags.Public | BindingFlags.Instance).GetValue(realEvent);
-		}
-	}
-
-	public abstract partial class MouseMoveEvent : EventArgs {
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal MouseMoveEvent(IButton button) {
-			this.button = button;
-		}
-	}
-
-	public partial class MouseEnterEvent : MouseMoveEvent {
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal MouseEnterEvent(IButton button)
-			: base(button) {
-		}
-	}
-
-	public partial class MouseLeaveEvent : MouseMoveEvent {
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal MouseLeaveEvent(IButton button)
-			: base(button) {
-		}
-	}
-
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	internal class ToolbarTypes {
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal readonly Type iToolbarManagerType;
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal readonly Type functionVisibilityType;
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal readonly Type functionDrawableType;
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal readonly ButtonTypes button;
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal ToolbarTypes() {
-			iToolbarManagerType = getType("Toolbar.IToolbarManager");
-			functionVisibilityType = getType("Toolbar.FunctionVisibility");
-			functionDrawableType = getType("Toolbar.FunctionDrawable");
-
-			Type iButtonType = getType("Toolbar.IButton");
-			button = new ButtonTypes(iButtonType);
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal static Type getType(string name) {
-			return AssemblyLoader.loadedAssemblies
-				.SelectMany(a => a.assembly.GetExportedTypes())
-				.SingleOrDefault(t => t.FullName == name);
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal static PropertyInfo getProperty(Type type, string name) {
-			return type.GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal static PropertyInfo getStaticProperty(Type type, string name) {
-			return type.GetProperty(name, BindingFlags.Public | BindingFlags.Static);
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal static EventInfo getEvent(Type type, string name) {
-			return type.GetEvent(name, BindingFlags.Public | BindingFlags.Instance);
-		}
-
-		[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-		internal static MethodInfo getMethod(Type type, string name) {
-			return type.GetMethod(name, BindingFlags.Public | BindingFlags.Instance);
-		}
-	}
-
-	[Obsolete("Deprecated; use version in ToadicusTools.Wrappers instead")]
-	internal class ButtonTypes {
-		internal readonly Type iButtonType;
-		internal readonly PropertyInfo textProperty;
-		internal readonly PropertyInfo textColorProperty;
-		internal readonly PropertyInfo texturePathProperty;
-		internal readonly PropertyInfo toolTipProperty;
-		internal readonly PropertyInfo visibleProperty;
-		internal readonly PropertyInfo visibilityProperty;
-		internal readonly PropertyInfo effectivelyVisibleProperty;
-		internal readonly PropertyInfo enabledProperty;
-		internal readonly PropertyInfo importantProperty;
-		internal readonly PropertyInfo drawableProperty;
-		internal readonly EventInfo onClickEvent;
-		internal readonly EventInfo onMouseEnterEvent;
-		internal readonly EventInfo onMouseLeaveEvent;
-		internal readonly MethodInfo destroyMethod;
-
-		internal ButtonTypes(Type iButtonType) {
-			this.iButtonType = iButtonType;
-
-			textProperty = ToolbarTypes.getProperty(iButtonType, "Text");
-			textColorProperty = ToolbarTypes.getProperty(iButtonType, "TextColor");
-			texturePathProperty = ToolbarTypes.getProperty(iButtonType, "TexturePath");
-			toolTipProperty = ToolbarTypes.getProperty(iButtonType, "ToolTip");
-			visibleProperty = ToolbarTypes.getProperty(iButtonType, "Visible");
-			visibilityProperty = ToolbarTypes.getProperty(iButtonType, "Visibility");
-			effectivelyVisibleProperty = ToolbarTypes.getProperty(iButtonType, "EffectivelyVisible");
-			enabledProperty = ToolbarTypes.getProperty(iButtonType, "Enabled");
-			importantProperty = ToolbarTypes.getProperty(iButtonType, "Important");
-			drawableProperty = ToolbarTypes.getProperty(iButtonType, "Drawable");
-			onClickEvent = ToolbarTypes.getEvent(iButtonType, "OnClick");
-			onMouseEnterEvent = ToolbarTypes.getEvent(iButtonType, "OnMouseEnter");
-			onMouseLeaveEvent = ToolbarTypes.getEvent(iButtonType, "OnMouseLeave");
-			destroyMethod = ToolbarTypes.getMethod(iButtonType, "Destroy");
-		}
-	}
-
-	#endregion
-}
-#pragma warning restore 0618
-

file:a/Compat/Tools.cs (deleted)
--- a/Compat/Tools.cs
+++ /dev/null
@@ -1,1070 +1,1 @@
-// ToadicusTools
-//
-// Tools.cs
-//
-// Copyright © 2014-2015, toadicus
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice,
-//    this list of conditions and the following disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above copyright notice,
-//    this list of conditions and the following disclaimer in the documentation and/or other
-//    materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-using System;
-using System.Collections.Generic;
-using System.Text;
-using UnityEngine;
-
-namespace ToadicusTools
-{
-	public static class Tools
-	{
-		[Obsolete("Deprecated; use field from ToadicusTools.Text.SIFormatProvider instead")]
-		#if HAS_SIFORMMATER
-		public static readonly SIFormatProvider SIFormatter = SIFormatProvider.SIFormatter;
-		#else
-		public static readonly IFormatProvider SIFormatter = System.Globalization.CultureInfo.CurrentCulture;
-		#endif
-
-		#region Logging
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void PostLogMessage(LogChannel channel, string msg)
-		{
-			Logging.PostLogMessage(channel, msg);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void PostLogMessage(LogChannel channel, string Format, params object[] args)
-		{
-			Logging.PostLogMessage(channel, Format, args);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void PostLogMessage(string Msg)
-		{
-			Logging.PostLogMessage(Msg);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void PostLogMessage(string Format, params object[] args)
-		{
-			Logging.PostLogMessage(Format, args);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void PostWarningMessage(string Msg)
-		{
-			Logging.PostWarningMessage(Msg);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void PostWarningMessage(string Format, params object[] args)
-		{
-			Logging.PostWarningMessage(Format, args);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void PostErrorMessage(string Msg)
-		{
-			Logging.PostErrorMessage(Msg);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void PostErrorMessage(string Format, params object[] args)
-		{
-			Logging.PostErrorMessage(Format, args);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		[System.Diagnostics.Conditional("DEBUG")]
-		public static void PostDebugMessage(string Msg)
-		{
-			Logging.PostDebugMessage(Msg);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		[System.Diagnostics.Conditional("DEBUG")]
-		public static void PostDebugMessage(object Sender, params object[] args)
-		{
-			Logging.PostDebugMessage(Sender, args);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		[System.Diagnostics.Conditional("DEBUG")]
-		public static void PostDebugMessage(object Sender, string Format, params object[] args)
-		{
-			Logging.PostDebugMessage(Sender, Format, args);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void PostMessageWithScreenMsg(string Msg)
-		{
-			Logging.PostMessageWithScreenMsg(Msg);
-		}
-
-		[Obsolete("Deprecated; use ToadicusTools.DebugLogger instead")]
-		public class DebugLogger : IDisposable
-		{
-			public static DebugLogger New(object caller)
-			{
-				return new DebugLogger(caller.GetType());
-			}
-
-			public static DebugLogger New(Type callingType)
-			{
-				return new DebugLogger(callingType);
-			}
-
-			private StringBuilder stringBuilder;
-
-			private DebugLogger() {}
-
-			private DebugLogger(Type caller)
-			{
-				this.stringBuilder = GetStringBuilder();
-
-				this.stringBuilder.Append(caller.Name);
-				this.stringBuilder.Append(": ");
-			}
-
-			[System.Diagnostics.Conditional("DEBUG")]
-			public void Append(object value)
-			{
-				this.stringBuilder.Append(value);
-			}
-
-			[System.Diagnostics.Conditional("DEBUG")]
-			public void AppendFormat(string format, params object[] args)
-			{
-				this.stringBuilder.AppendFormat(format, args);
-			}
-
-			[System.Diagnostics.Conditional("DEBUG")]
-			public void AppendLine(string value)
-			{
-				this.stringBuilder.Append(value);
-				this.stringBuilder.Append('\n');
-			}
-
-			[System.Diagnostics.Conditional("DEBUG")]
-			public void Print(bool postToScreen)
-			{
-				if (postToScreen)
-				{
-					PostMessageWithScreenMsg(this.stringBuilder.ToString());
-				}
-				else
-				{
-					Debug.Log(this.stringBuilder.ToString());
-				}
-
-				this.stringBuilder.Length = 0;
-			}
-
-			[System.Diagnostics.Conditional("DEBUG")]
-			public void Print()
-			{
-				PostMessageWithScreenMsg(this.stringBuilder.ToString());
-			}
-			[System.Diagnostics.Conditional("DEBUG")]
-			public void Clear()
-			{
-				this.stringBuilder.Length = 0;
-			}
-
-			public void Dispose()
-			{
-				PutStringBuilder(this.stringBuilder);
-			}
-
-			~DebugLogger()
-			{
-				this.Dispose();
-			}
-		}
-		#endregion
-
-		#region ComponentExtensions
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void Log(this Component component, LogChannel channel, string Msg)
-		{
-			Extensions.ComponentExtensions.Log(component, channel, Msg);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void Log(this Component component, string Msg)
-		{
-			Extensions.ComponentExtensions.Log(component, Msg);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void Log(this Component component, string format, params object[] args)
-		{
-			Extensions.ComponentExtensions.Log(component, format, args);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void LogWarning(this Component component, string Msg)
-		{
-			Extensions.ComponentExtensions.LogWarning(component, Msg);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void LogWarning(this Component component, string format, params object[] args)
-		{
-			Extensions.ComponentExtensions.LogWarning(component, format, args);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void LogError(this Component component, string Msg)
-		{
-			Extensions.ComponentExtensions.LogError(component, Msg);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		public static void LogError(this Component component, string format, params object[] args)
-		{
-			Extensions.ComponentExtensions.LogError(component, format, args);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		[System.Diagnostics.Conditional("DEBUG")]
-		public static void LogDebug(this Component component, string Msg)
-		{
-			Extensions.ComponentExtensions.LogDebug(component, Msg);
-		}
-
-		[Obsolete("Deprecated; using method from Logging instead")]
-		[System.Diagnostics.Conditional("DEBUG")]
-		public static void LogDebug(this Component component, string format, params object[] args)
-		{
-			Extensions.ComponentExtensions.LogDebug(component, format, args);
-		}
-		#endregion
-
-		#region PartModuleExtensions
-		public static void DebugFieldsActivate(this PartModule partModule)
-		{
-			Extensions.PartModuleExtensions.DebugFieldsActivate(partModule);
-		}
-		#endregion
-
-		#region PooledStringBuilder
-		[Obsolete("Deprecated, use PooledStringBuilder instead")]
-		public static StringBuilder GetStringBuilder()
-		{
-			return (StringBuilder)Text.PooledStringBuilder.Get();
-		}
-
-		[Obsolete("Deprecated, use PooledStringBuilder instead")]
-		public static void PutStringBuilder(Text.PooledStringBuilder sb)
-		{
-			Text.PooledStringBuilder.Put(sb);
-		}
-
-		[Obsolete("Deprecated, use PooledStringBuilder instead")]
-		public static void PutStringBuilder(StringBuilder sb) {}
-		#endregion
-
-		#region ArrayExtensions
-		[Obsolete("Deprecated, use method from Extensions.ArrayExtensions instead")]
-		public static bool Contains(this GameScenes[] haystack, GameScenes needle)
-		{
-			return Extensions.CollectionExtensions.Contains(haystack, needle);
-		}
-
-		[Obsolete("Deprecated, use method from Extensions.ArrayExtensions instead")]
-		public static bool Contains(this CelestialBody[] haystack, CelestialBody needle)
-		{
-			return Extensions.CollectionExtensions.Contains(haystack, needle);
-		}
-
-		[Obsolete("Deprecated, use method from Extensions.ArrayExtensions instead")]
-		public static bool Contains<T>(this T[] haystack, T needle)
-		{
-			return Extensions.CollectionExtensions.Contains(haystack, needle);
-		}
-		#endregion
-
-		#region TextExtensions
-		[Obsolete("Deprecated; use method from Text.TextExtensions instead")]
-		public static string SPrint<T>(this T[] array, string delimiter, Func<T, string> stringFunc)
-		{
-			return Text.Extensions.SPrint(array, delimiter, stringFunc);
-		}
-
-		[Obsolete("Deprecated; use method from Text.TextExtensions instead")]
-		public static string SPrint<T>(this T[] array, Func<T, string> stringFunc, string delimiter = ", ")
-		{
-			return Text.Extensions.SPrint(array, delimiter, stringFunc);
-		}
-
-		[Obsolete("Deprecated; use method from Text.TextExtensions instead")]
-		public static string SPrint<T>(this T[] array, string delimiter = ", ")
-		{
-			return Text.Extensions.SPrint(array, delimiter, null);
-		}
-
-		[Obsolete("Deprecated; use method from Text.TextExtensions instead")]
-		public static string SPrint<T>(this IList<T> list, string delimiter, Func<T, string> stringFunc)
-		{
-			return Text.Extensions.SPrint(list, delimiter, stringFunc);
-		}
-
-		[Obsolete("Deprecated; use method from Text.TextExtensions instead")]
-		public static string SPrint<T>(this List<T> list, string delimiter, Func<T, string> stringFunc)
-		{
-			return Text.Extensions.SPrint(list as IList<T>, delimiter, stringFunc);
-		}
-
-		[Obsolete("Deprecated; use method from Text.TextExtensions instead")]
-		public static string SPrint<T>(this List<T> list, Func<T, string> stringFunc, string delimiter = ", ")
-		{
-			return Text.Extensions.SPrint(list, delimiter, stringFunc);
-		}
-
-		[Obsolete("Deprecated; use method from Text.TextExtensions instead")]
-		public static string SPrint<T>(this IList<T> list, Func<T, string> stringFunc, string delimiter = ", ")
-		{
-			return Text.Extensions.SPrint(list, delimiter, stringFunc);
-		}
-
-		[Obsolete("Deprecated; use method from Text.TextExtensions instead")]
-		public static string SPrint<T>(this List<T> list, string delimiter = ", ")
-		{
-			return Text.Extensions.SPrint(list, delimiter, null);
-		}
-
-		[Obsolete("Deprecated; use method from Text.TextExtensions instead")]
-		public static string SPrint<T>(this IList<T> list, string delimiter = ", ")
-		{
-			return Text.Extensions.SPrint(list, delimiter, null);
-		}
-		#endregion
-
-		#region Enum_Tools
-		[Obsolete("Deprecated; use method from EnumTools instead")]
-		public static bool TryParse<enumType>(string value, out enumType result)
-			where enumType : struct, IConvertible, IComparable, IFormattable
-		{
-			return EnumTools.TryParse(value, out result);
-		}
-		#endregion
-
-		#region IComparable Extensions
-		[Obsolete("Deprecated; use method from MathTools instead")]
-		public static T Min<T>(params T[] values) where T : IComparable<T>
-		{
-			return MathTools.Min(values);
-		}
-		#endregion
-
-		#region Stopwatch Extensions
-		[Obsolete("Deprecated; use method from ToadicusTools.Extensions instead")]
-		public static void Restart(this System.Diagnostics.Stopwatch stopwatch)
-		{
-			Extensions.StopwatchExtensions.Restart(stopwatch);
-		}
-		#endregion
-
-		#region UI_Control Extensions
-		[Obsolete("Deprecated; use method from ToadicusTools.Extensions instead")]
-		public static UI_Control uiControlCurrent(this BaseField field)
-		{
-			return Extensions.BaseFieldExtensions.uiControlCurrent(field);
-		}
-		#endregion
-
-		#region ConfigNodeExtensions
-		/// <summary>
-		/// Gets the value of key "name" in <see cref="ConfigNode"/> "node" as a <see cref="string"/>,
-		/// or returns a given default value if the key does not exist or cannot be parsed.
-		/// </summary>
-		/// <returns>The value as a <see cref="string"/></returns>
-		/// <param name="node">The <see cref="ConfigNode"/> being referenced</param>
-		/// <param name="name">The name of the key being referenced</param>
-		/// <param name="defaultValue">The default value to return in fallback conditions</param>
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static string GetValue(this ConfigNode node, string name, string defaultValue)
-		{
-			return ToadicusTools.Extensions.ConfigNodeExtensions.GetValue(node, name, defaultValue);
-		}
-
-		/// <summary>
-		/// Gets the value of key "name" in <see cref="ConfigNode"/> "node" as a <see cref="double"/>,
-		/// or returns a given default value if the key does not exist or cannot be parsed.
-		/// </summary>
-		/// <returns>The value as a <see cref="double"/></returns>
-		/// <param name="node">The <see cref="ConfigNode"/> being referenced</param>
-		/// <param name="name">The name of the key being referenced</param>
-		/// <param name="defaultValue">The default value to return in fallback conditions</param>
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static double GetValue(this ConfigNode node, string name, double defaultValue)
-		{
-			return ToadicusTools.Extensions.ConfigNodeExtensions.GetValue(node, name, defaultValue);
-		}
-
-		/// <summary>
-		/// Trys to gets the value of key "name" in <see cref="ConfigNode"/> "node" as a <see cref="double"/>,
-		/// placing it in the output value
-		/// </summary>
-		/// <returns><c>true</c>, if get value was retrieved successfully, <c>false</c> otherwise.</returns>
-		/// <param name="node">The <see cref="ConfigNode"/>  being referenced</param>
-		/// <param name="name">The name of the key being referenced</param>
-		/// <param name="value">The output value as parsed</param>
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static bool TryGetValue(this ConfigNode node, string name, out double value)
-		{
-			return ToadicusTools.Extensions.ConfigNodeExtensions.TryGetValue(node, name, out value);
-		}
-
-		/// <summary>
-		/// Gets the value of key "name" in <see cref="ConfigNode"/> "node" as a <see cref="float"/>,
-		/// or returns a given default value if the key does not exist or cannot be parsed.
-		/// </summary>
-		/// <returns>The value as a float</returns>
-		/// <param name="node">The ConfigNode being referenced</param>
-		/// <param name="name">The name of the key being referenced</param>
-		/// <param name="defaultValue">The default value to return in fallback conditions</param>
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static float GetValue(this ConfigNode node, string name, float defaultValue)
-		{
-			return ToadicusTools.Extensions.ConfigNodeExtensions.GetValue(node, name, defaultValue);
-		}
-
-		/// <summary>
-		/// Gets the value of key "name" in ConfigNode "node" as an int, or returns a given default value if the key
-		/// does not exist or cannot be parsed to a double.
-		/// </summary>
-		/// <returns>The value as an int</returns>
-		/// <param name="node">The ConfigNode being referenced</param>
-		/// <param name="name">The name of the key being referenced</param>
-		/// <param name="defaultValue">The default value to return in fallback conditions</param>
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static int GetValue(this ConfigNode node, string name, int defaultValue)
-		{
-			return ToadicusTools.Extensions.ConfigNodeExtensions.GetValue(node, name, defaultValue);
-		}
-
-		/// <summary>
-		/// Gets the value of key "name" in ConfigNode "node" as a bool, or returns a given default value if the key
-		/// does not exist or cannot be parsed to a bool.
-		/// </summary>
-		/// <returns>The value as a bool</returns>
-		/// <param name="node">The ConfigNode being referenced</param>
-		/// <param name="name">The name of the key being referenced</param>
-		/// <param name="defaultValue">The default value to return in fallback conditions</param>
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static bool GetValue(this ConfigNode node, string name, bool defaultValue)
-		{
-			return ToadicusTools.Extensions.ConfigNodeExtensions.GetValue(node, name, defaultValue);
-		}
-
-		/// <summary>
-		/// Trys to gets the value of key "name" in <see cref="ConfigNode"/> "node" as a <see cref="float"/>,
-		/// placing it in the output value
-		/// </summary>
-		/// <returns><c>true</c>, if get value was retrieved successfully, <c>false</c> otherwise.</returns>
-		/// <param name="node">The ConfigNode being referenced</param>
-		/// <param name="name">The name of the key being referenced</param>
-		/// <param name="value">The output value as parsed</param>
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static bool TryGetValue(this ConfigNode node, string name, out float value)
-		{
-			return ToadicusTools.Extensions.ConfigNodeExtensions.TryGetValue(node, name, out value);
-		}
-
-		/// <summary>
-		/// Trys to gets the value of key "name" in <see cref="ConfigNode"/> "node" as an <see cref="int"/>,
-		/// placing it in the output value
-		/// </summary>
-		/// <returns><c>true</c>, if get value was retrieved successfully, <c>false</c> otherwise.</returns>
-		/// <param name="node">The ConfigNode being referenced</param>
-		/// <param name="name">The name of the key being referenced</param>
-		/// <param name="value">The output value as parsed</param>
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static bool TryGetValue(this ConfigNode node, string name, out int value)
-		{
-			return ToadicusTools.Extensions.ConfigNodeExtensions.TryGetValue(node, name, out value);
-		}
-
-		/// <summary>
-		/// Trys to gets the value of key "name" in <see cref="ConfigNode"/> "node" as a <see cref="bool"/>,
-		/// placing it in the output value
-		/// </summary>
-		/// <returns><c>true</c>, if get value was retrieved successfully, <c>false</c> otherwise.</returns>
-		/// <param name="node">The ConfigNode being referenced</param>
-		/// <param name="name">The name of the key being referenced</param>
-		/// <param name="value">The output value as parsed</param>
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static bool TryGetValue(this ConfigNode node, string name, out bool value)
-		{
-			return ToadicusTools.Extensions.ConfigNodeExtensions.TryGetValue(node, name, out value);
-		}
-
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static bool TryGetValue(this ConfigNode node, string name, out string value)
-		{
-			return ToadicusTools.Extensions.ConfigNodeExtensions.TryGetValue(node, name, out value);
-		}
-
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static void SafeSetValue(this ConfigNode node, string name, string value)
-		{
-			ToadicusTools.Extensions.ConfigNodeExtensions.SafeSetValue(node, name, value);
-		}
-
-		[Obsolete("Use methods from ToadicusTools.Extensions.ConfigNodeExtensions instead.")]
-		public static void SafeSetValue(this ConfigNode node, string name, bool value)
-		{
-			ToadicusTools.Extensions.ConfigNodeExtensions.SafeSetValue(node, name, value);
-		}
-		#endregion
-
-		#region WindowTools
-		[Obsolete("Use method from ToadicusTools.GUIUtils instead")]
-		public static Rect ClampRectToScreen(Rect window, int topMargin, int rgtMargin, int botMargin, int lftMargin)
-		{
-			return ToadicusTools.GUIUtils.WindowTools.ClampRectToScreen(window, topMargin, rgtMargin, botMargin, lftMargin);
-		}
-
-		// This implementation is adapted from FARGUIUtils.ClampToScreen
-		[Obsolete("Use method from ToadicusTools.GUIUtils instead")]
-		public static Rect ClampRectToScreen(Rect window, int xMargin, int yMargin)
-		{
-			return ToadicusTools.GUIUtils.WindowTools.ClampRectToScreen(window, yMargin, xMargin, yMargin, xMargin);
-		}
-
-		[Obsolete("Use method from ToadicusTools.GUIUtils instead")]
-		public static Rect ClampRectToScreen(Rect window, int Margin)
-		{
-			return ToadicusTools.GUIUtils.WindowTools.ClampRectToScreen(window, Margin, Margin);
-		}
-
-		[Obsolete("Use method from ToadicusTools.GUIUtils instead")]
-		public static Rect ClampRectToScreen(Rect window)
-		{
-			return ToadicusTools.GUIUtils.WindowTools.ClampRectToScreen(window, 30);
-		}
-
-		[Obsolete("Use method from ToadicusTools.GUIUtils instead")]
-		public static Rect ClampRectToEditorPad(Rect window)
-		{
-			return ToadicusTools.GUIUtils.WindowTools.ClampRectToEditorPad(window);
-		}
-
-		[Obsolete("Use method from ToadicusTools.GUIUtils instead")]
-		public static Vector2 ClampV2ToScreen(Vector2 vec, uint xMargin, uint yMargin)
-		{
-			return ToadicusTools.GUIUtils.WindowTools.ClampV2ToScreen(vec, xMargin, yMargin);
-		}
-
-		[Obsolete("Use method from ToadicusTools.GUIUtils instead")]
-		public static Vector2 ClampV2ToScreen(Vector2 vec, uint Margin)
-		{
-			return ToadicusTools.GUIUtils.WindowTools.ClampV2ToScreen(vec, Margin, Margin);
-		}
-
-		[Obsolete("Use method from ToadicusTools.GUIUtils instead")]
-		public static Vector2 ClampV2ToScreen(Vector2 vec)
-		{
-			return ToadicusTools.GUIUtils.WindowTools.ClampV2ToScreen(vec, 15);
-		}
-
-		// UNDONE: This seems messy.  Can we clean it up?
-		[Obsolete("Use method from ToadicusTools.GUIUtils instead")]
-		public static Rect DockToWindow(Rect icon, Rect window)
-		{
-			return ToadicusTools.GUIUtils.WindowTools.DockToWindow(icon, window);
-		}
-		#endregion
-
-		#region MuMech Tools
-		// Derived from MechJeb2/VesselState.cs
-		[Obsolete("Use method from ToadicusTools.MuMechTools instead")]
-		public static Quaternion getSurfaceRotation(this Vessel vessel)
-		{
-			return MuMechTools.MuMechTools.getSurfaceRotation(vessel);
-		}
-
-		// Derived from MechJeb2/VesselState.cs
-		[Obsolete("Use method from ToadicusTools.MuMechTools instead")]
-		public static double getSurfaceHeading(this Vessel vessel)
-		{
-			return MuMechTools.MuMechTools.getSurfaceHeading(vessel);
-		}
-
-		// Derived from MechJeb2/VesselState.cs
-		[Obsolete("Use method from ToadicusTools.MuMechTools instead")]
-		public static double getSurfacePitch(this Vessel vessel)
-		{
-			return MuMechTools.MuMechTools.getSurfacePitch(vessel);
-		}
-
-		// Derived from MechJeb2/MuUtils.cs
-		[Obsolete("Use method from ToadicusTools.MuMechTools instead")]
-		public static string MuMech_ToSI(
-			double d, int digits = 3, int MinMagnitude = 0, int MaxMagnitude = int.MaxValue
-		)
-		{
-			return MuMechTools.MuMechTools.MuMech_ToSI(d, digits, MinMagnitude, MaxMagnitude);
-		}
-		#endregion
-
-		#region PartExtensions
-		[Obsolete("Deprecated, please use hasModuleByType from ToadicusTools.Extensions")]
-		public static bool hasModuleType<T>(this Part part) where T : PartModule
-		{
-			return Extensions.PartExtensions.hasModuleType<T>(part);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static bool hasModuleByType<T>(this Part part) where T : PartModule
-		{
-			return Extensions.PartExtensions.hasModuleByType<T>(part);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static bool hasModuleByType(this Part part, Type type)
-		{
-			return Extensions.PartExtensions.hasModuleByType(part, type);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static bool hasModuleByName(this Part part, string moduleName)
-		{
-			return Extensions.PartExtensions.hasModuleByName(part, moduleName);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static List<T> getModulesOfType<T>(this Part part) where T : PartModule
-		{
-			return Extensions.PartExtensions.getModulesOfType<T>(part);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static T getFirstModuleOfType<T>(this Part part) where T: PartModule
-		{
-			return Extensions.PartExtensions.getFirstModuleOfType<T>(part);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static bool tryGetFirstModuleOfType<T>(this Part part, out T module) where T : PartModule
-		{
-			return Extensions.PartExtensions.tryGetFirstModuleOfType<T>(part, out module);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static PartModule getFirstModuleByName(this Part part, string moduleName)
-		{
-			return Extensions.PartExtensions.getFirstModuleByName(part, moduleName);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static bool tryGetFirstModuleByName(this Part part, string moduleName, out PartModule module)
-		{
-			return Extensions.PartExtensions.tryGetFirstModuleByName(part, moduleName, out module);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static bool hasAncestorPart(this Part part, Part checkPart)
-		{
-			return Extensions.PartExtensions.hasAncestorPart(part, checkPart);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static bool isDecoupler(this Part part)
-		{
-			return Extensions.PartExtensions.isDecoupler(part);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static bool isDockingNode(this Part part)
-		{
-			return Extensions.PartExtensions.isDockingNode(part);
-		}
-
-		[Obsolete("Deprecated, please use method from ToadicusTools.Extensions")]
-		public static bool isInStagingList(this Part part)
-		{
-			return Extensions.PartExtensions.isInStagingList(part);
-		}
-		#endregion
-
-		#region VesselExtensions
-		/// <summary>
-		/// Returns the distance between this Vessel and another Vessel.
-		/// </summary>
-		/// <param name="vesselOne">This <see cref="Vessel"/><see ></param>
-		/// <param name="vesselTwo">Another <see cref="Vessel"/></param>
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static double DistanceTo(this Vessel vesselOne, Vessel vesselTwo)
-		{
-			return Extensions.VesselExtensions.DistanceTo(vesselOne, vesselTwo);
-		}
-
-		/// <summary>
-		/// Returns the distance between this Vessel and a CelestialBody
-		/// </summary>
-		/// <param name="vessel">This Vessel</param>
-		/// <param name="body">A <see cref="CelestialBody"/></param>
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static double DistanceTo(this Vessel vessel, CelestialBody body)
-		{
-			return Extensions.VesselExtensions.DistanceTo(vessel, body);
-		}
-
-		/// <summary>
-		/// Returns the square of the distance between this Vessel and another Vessel.
-		/// </summary>
-		/// <param name="vesselOne">This <see cref="Vessel"/><see ></param>
-		/// <param name="vesselTwo">Another <see cref="Vessel"/></param>
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static double sqrDistanceTo(this Vessel vesselOne, Vessel vesselTwo)
-		{
-			return Extensions.VesselExtensions.sqrDistanceTo(vesselOne, vesselTwo);
-		}
-
-		/// <summary>
-		/// Returns the square of the distance between this Vessel and a CelestialBody
-		/// </summary>
-		/// <param name="vessel">This Vessel</param>
-		/// <param name="body">A <see cref="CelestialBody"/></param>
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static double sqrDistanceTo(this Vessel vessel, CelestialBody body)
-		{
-			return Extensions.VesselExtensions.sqrDistanceTo(vessel, body);
-		}
-
-		/// <summary>
-		/// Returns true if no CelestialBody occludes the target Vessel from this Vessel, false otherwise.
-		/// </summary>
-		/// <returns><c>true</c>, if this Vessel has line of sight to the target Vessel,
-		/// <c>false</c> otherwise.</returns>
-		/// <param name="vessel">this Vessel</param>
-		/// <param name="targetVessel">target Vessel</param>
-		/// <param name="firstOccludingBody">Set to the first body found to be blocking line of sight,
-		/// if any, otherwise null.</param>
-		/// <param name="sqrRatio">The square of the "grace" ratio to apply
-		/// to the radius of potentially excluding bodies.</param>
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static bool hasLineOfSightTo(
-			this Vessel vessel,
-			Vessel targetVessel,
-			out CelestialBody firstOccludingBody,
-			double sqrRatio = 1d
-		)
-		{
-			return Extensions.VesselExtensions.hasLineOfSightTo(vessel, targetVessel, out firstOccludingBody, sqrRatio);
-		}
-
-		/// <summary>
-		/// Returns true if no CelestialBody occludes the target CelestialBody from this Vessel, false otherwise.
-		/// </summary>
-		/// <returns><c>true</c>, if this Vessel has line of sight to the target Vessel, <c>false</c> otherwise.</returns>
-		/// <param name="vessel">this Vessel</param>
-		/// <param name="targetBody">target CelestialBody</param>
-		/// <param name="firstOccludingBody">Set to the first body found to be blocking line of sight,
-		/// if any, otherwise null.</param>
-		/// <param name="sqrRatio">The square of the "grace" ratio to apply
-		/// to the radius of potentially excluding bodies.</param>
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static bool hasLineOfSightTo(
-			this Vessel vessel,
-			CelestialBody targetBody,
-			out CelestialBody firstOccludingBody,
-			double sqrRatio = 1d
-		)
-		{
-			return Extensions.VesselExtensions.hasLineOfSightTo(vessel, targetBody, out firstOccludingBody, sqrRatio);
-		}
-
-		/// <summary>
-		/// Returns true if no CelestialBody occludes the target Vessel from this Vessel, false otherwise.
-		/// </summary>
-		/// <returns><c>true</c>, if this Vessel has line of sight to the target Vessel, <c>false</c> otherwise.</returns>
-		/// <param name="vessel">this Vessel</param>
-		/// <param name="targetVessel">target Vessel</param>
-		/// <param name="sqrRatio">The square of the "grace" ratio to apply
-		/// to the radius of potentially excluding bodies.</param>
-		[Obsolete("This overload has been removed", true)]
-		public static bool hasLineOfSightTo(
-			this Vessel vessel,
-			Vessel targetVessel,
-			double sqrRatio = 1d
-		)
-		{
-			throw new NotImplementedException("This overload has been removed.");
-		}
-
-		/// <summary>
-		/// Returns true if no CelestialBody occludes the target point from this Vessel, false otherwise.
-		/// Includes a 5% "fudge factor".
-		/// </summary>
-		/// <returns><c>true</c>, if this Vessel has line of sight to the target Vessel, <c>false</c> otherwise.</returns>
-		/// <param name="vessel">this Vessel</param>
-		/// <param name="distantPoint">target point</param>
-		/// <param name="firstOccludingBody">Set to the first body found to be blocking line of sight,
-		/// if any, otherwise null.</param>
-		/// <param name="excludedBody">CelestialBody to exclude from the LOS check</param>
-		/// <param name="sqrRatio">The square of the "grace" ratio to apply
-		/// to the radius of potentially excluding bodies.</param>
-		[Obsolete("This overload has been removed", true)]
-		public static bool hasLineOfSightTo(
-			this Vessel vessel,
-			Vector3d distantPoint,
-			out CelestialBody firstOccludingBody,
-			CelestialBody excludedBody,
-			double sqrRatio = 1d
-		)
-		{
-			throw new NotImplementedException("This overload has been removed.");
-		}
-
-		/// <summary>
-		/// Returns true if no CelestialBody occludes the target point from this Vessel, false otherwise.
-		/// Includes a 5% "fudge factor".
-		/// </summary>
-		/// <returns><c>true</c>, if this Vessel has line of sight to the target Vessel, <c>false</c> otherwise.</returns>
-		/// <param name="vessel">this Vessel</param>
-		/// <param name="distantPoint">target point</param>
-		/// <param name="firstOccludingBody">Set to the first body found to be blocking line of sight,
-		/// if any, otherwise null.</param>
-		/// <param name="sqrRatio">The square of the "grace" ratio to apply
-		/// to the radius of potentially excluding bodies.</param>
-		[Obsolete("This overload has been removed", true)]
-		public static bool hasLineOfSightTo(
-			this Vessel vessel,
-			Vector3d distantPoint,
-			out CelestialBody firstOccludingBody,
-			double sqrRatio = 1d
-		)
-		{
-			throw new NotImplementedException("This overload has been removed.");
-		}
-
-		/// <summary>
-		/// Returns true if no CelestialBody occludes the target CelestialBody from this Vessel, false otherwise.
-		/// </summary>
-		/// <returns><c>true</c>, if this Vessel has line of sight to the target Vessel, <c>false</c> otherwise.</returns>
-		/// <param name="vessel">this Vessel</param>
-		/// <param name="targetBody">target CelestialBody</param>
-		/// <param name="sqrRatio">The square of the "grace" ratio to apply
-		/// to the radius of potentially excluding bodies.</param>
-		[Obsolete("This overload has been removed", true)]
-		public static bool hasLineOfSightTo(
-			this Vessel vessel,
-			CelestialBody targetBody,
-			double sqrRatio = 1d
-		)
-		{
-			throw new NotImplementedException("This overload has been removed.");
-		}
-
-		/// <summary>
-		/// Returns true if no CelestialBody occludes the target point from this Vessel, false otherwise.
-		/// Includes a 5% "fudge factor".
-		/// </summary>
-		/// <returns><c>true</c>, if this Vessel has line of sight to the target Vessel, <c>false</c> otherwise.</returns>
-		/// <param name="vessel">this Vessel</param>
-		/// <param name="distantPoint">target point</param>
-		/// <param name="firstOccludingBody">Set to the first body found to be blocking line of sight,
-		/// if any, otherwise null.</param>
-		/// <param name="excludedBody">Array of CelestialBodies to exclude from the LOS check</param>
-		/// <param name="sqrRatio">The square of the "grace" ratio to apply
-		/// to the radius of potentially excluding bodies.</param>
-		[Obsolete("This overload has been removed", true)]
-		public static bool hasLineOfSightTo(
-			this Vessel vessel,
-			Vector3d distantPoint,
-			out CelestialBody firstOccludingBody,
-			CelestialBody[] excludedBodies = null,
-			double sqrRatio = 1d
-		)
-		{
-			throw new NotImplementedException("This overload has been removed.");
-		}
-
-		/// <summary>
-		/// Returns true if no CelestialBody occludes the target point from this Vessel, false otherwise.
-		/// Includes a 5% "fudge factor".
-		/// </summary>
-		/// <returns><c>true</c>, if this Vessel has line of sight to the target Vessel, <c>false</c> otherwise.</returns>
-		/// <param name="vessel">this Vessel</param>
-		/// <param name="distantPoint">target point</param>
-		/// <param name="excludedBody">Array of CelestialBodies to exclude from the LOS check</param>
-		/// <param name="sqrRatio">The square of the "grace" ratio to apply
-		/// to the radius of potentially excluding bodies.</param>
-		[Obsolete("This overload has been removed", true)]
-		public static bool hasLineOfSightTo(
-			this Vessel vessel,
-			Vector3d distantPoint,
-			CelestialBody[] excludedBodies = null,
-			double sqrRatio = 1d
-		)
-		{
-			throw new NotImplementedException("This overload has been removed.");
-		}
-
-		/// <summary>
-		/// Checks if this vessel has a properly-crewed manned command pod.
-		/// </summary>
-		/// <returns><c>true</c>, if this vessel is adequately crewed for control, <c>false</c> otherwise.</returns>
-		/// <param name="vessel"></param>
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static bool hasCrewCommand(this Vessel vessel)
-		{
-			return Extensions.VesselExtensions.hasCrewCommand(vessel);
-		}
-
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static bool hasProbeCommand(this Vessel vessel)
-		{
-			return Extensions.VesselExtensions.hasProbeCommand(vessel);
-		}
-
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static VesselCommand CurrentCommand(this Vessel vessel)
-		{
-			return (VesselCommand)Extensions.VesselExtensions.CurrentCommand(vessel);
-		}
-
-		/// <summary>
-		/// Gets a list of PartModules of type T within this vessel.
-		/// </summary>
-		/// <returns>a list of PartModules of type T within this vessel, or an empty list if none</returns>
-		/// <param name="vessel"></param>
-		/// <typeparam name="T">PartModule type paramter</typeparam>
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static IList<T> getModulesOfType<T>(this Vessel vessel) where T : PartModule
-		{
-			return Extensions.VesselExtensions.getModulesOfType<T>(vessel);
-		}
-
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static bool tryGetFirstModuleOfType<T>(this Vessel vessel, out T module) where T : PartModule
-		{
-			return Extensions.VesselExtensions.tryGetFirstModuleOfType<T>(vessel, out module);
-		}
-
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static T getFirstModuleOfType<T>(this Vessel vessel) where T : PartModule
-		{
-			return Extensions.VesselExtensions.getFirstModuleOfType<T>(vessel);
-		}
-
-		[Obsolete("Deprecated, please use module from Extensions.VesselExtensions instead")]
-		public static bool hasModuleOfType<T>(this Vessel vessel) where T : PartModule
-		{
-			return Extensions.VesselExtensions.hasModuleOfType<T>(vessel);
-		}
-		#endregion
-
-		#region Math
-		/// <summary>
-		/// <para>Exponentiation function optimized for arbitrary integer exponents.</para>
-		/// <para>Returns b to the nth power</para>
-		/// </summary>
-		/// <param name="b">The base of the exponential</param>
-		/// <param name="n">The exponent</param>
-		[Obsolete("Deprecated, please use module from MathTools.Pow instead")]
-		public static double Pow(double b, int n)
-		{
-			return MathTools.Pow(b, n);
-		}
-
-		/// <summary>
-		/// <para>Exponentiation function which uses an integer-optimized algorithm when possible,
-		/// or falls back to <see cref="Math.Pow"/>.</para>
-		/// <para>Returns b to the nth power</para>
-		/// </summary>
-		/// <param name="b">The base of the exponential</param>
-		/// <param name="n">The exponent</param>
-		[Obsolete("Deprecated, please use module from MathTools.Pow instead")]
-		public static double Pow(double b, double n)
-		{
-			return MathTools.Pow(b, n);
-		}
-
-		/// <summary>
-		/// <para>Exponentiation function optimized for arbitrary integer exponents
-		/// using single-precision floats.</para>
-		/// <para>Returns b to the nth power</para>
-		/// </summary>
-		/// <param name="b">The base of the exponential</param>
-		/// <param name="n">The exponent</param>
-		[Obsolete("Deprecated, please use module from MathTools.Pow instead")]
-		public static float Pow(float b, int n)
-		{
-			return MathTools.Pow(b, n);
-		}
-
-		/// <summary>
-		/// <para>Exponentiation function which uses an integer-optimized algorithm when possible,
-		/// or falls back to <see cref="Math.Pow"/>.  Uses single-precision floats in the integer case.</para>
-		/// <para>Returns b to the nth power</para>
-		/// </summary>
-		/// <param name="b">The base of the exponential</param>
-		/// <param name="n">The exponent</param>
-		[Obsolete("Deprecated, please use module from MathTools.Pow instead")]
-		public static float Pow(float b, float n)
-		{
-			return MathTools.Pow(b, n);
-		}
-		#endregion
-
-		#region Misc
-		// TODO: Find this guy a home
-		public static bool SetIfDefault<T>(this T o, T val)
-		{
-			if (System.Object.Equals(o, default(T)))
-			{
-				o = val;
-				return true;
-			}
-
-			return false;
-		}
-		
-		
-		public static Part GetSceneRootPart()
-		{
-			Part rootPart;
-			switch (HighLogic.LoadedScene)
-			{
-				case GameScenes.EDITOR:
-					rootPart = EditorLogic.RootPart;
-					break;
-				case GameScenes.FLIGHT:
-					rootPart = FlightGlobals.ActiveVessel != null ? FlightGlobals.ActiveVessel.rootPart : null;
-					break;
-				default:
-					rootPart = null;
-					break;
-			}
-
-			return rootPart;
-		}
-		#endregion
-	}
-
-	public enum VesselCommand
-	{
-		None = 0,
-		Probe = 1,
-		Crew = 2
-	}
-}

--- a/ToadicusTools.csproj
+++ b/ToadicusTools.csproj
@@ -82,7 +82,6 @@
     <Compile Include="RandomTools.cs" />
     <Compile Include="AnimationWrapper.cs" />
     <Compile Include="RollingAverage.cs" />
-    <Compile Include="Compat\Tools.cs" />
     <Compile Include="Extensions\ConfigNodeExtensions.cs" />
     <Compile Include="MuMechTools\MuMech_Tools.cs" />
     <Compile Include="Text\PooledStringBuilder.cs" />
@@ -91,7 +90,6 @@
     <Compile Include="Extensions\VesselExtensions.cs" />
     <Compile Include="MathTools.cs" />
     <Compile Include="Extensions\AppLauncherExtensions.cs" />
-    <Compile Include="Compat\AppLauncherExtensions.cs" />
     <Compile Include="Debug\DebugPartModule.cs" />
     <Compile Include="Text\TextTools.cs" />
     <Compile Include="GUIUtils\WindowTools.cs" />
@@ -109,11 +107,9 @@
     <Compile Include="GUIUtils\Table.cs" />
     <Compile Include="GUIUtils\Layout.cs" />
     <Compile Include="Extensions\CollectionExtensions.cs" />
-    <Compile Include="Compat\ClassStubs.cs" />
     <Compile Include="Debug\PooledDebugLogger.cs" />
     <Compile Include="Text\Extensions.cs" />
     <Compile Include="Enums.cs" />
-    <Compile Include="Compat\ToolbarWrapper.cs" />
     <Compile Include="PluginConfiguration.cs" />
   </ItemGroup>
   <ProjectExtensions>
@@ -143,7 +139,6 @@
     <None Include="TweakableTools\TweakableTools.cs" />
   </ItemGroup>
   <ItemGroup>
-    <Folder Include="Compat\" />
     <Folder Include="Extensions\" />
     <Folder Include="MuMechTools\" />
     <Folder Include="Text\" />