diff --git a/Perspex/Application.cs b/Perspex/Application.cs
deleted file mode 100644
index a1e1e39e38..0000000000
--- a/Perspex/Application.cs
+++ /dev/null
@@ -1,97 +0,0 @@
-// -----------------------------------------------------------------------
-//
-// Copyright 2014 MIT Licence. See licence.md for more information.
-//
-// -----------------------------------------------------------------------
-
-namespace Perspex
-{
- using Perspex.Controls;
- using Perspex.Input;
- using Perspex.Styling;
- using Perspex.Threading;
- using Splat;
-
- public class Application
- {
- private DataTemplates dataTemplates;
-
- private Styles styles;
-
- public Application()
- {
- Current = this;
- this.FocusManager = new FocusManager();
- this.InputManager = new InputManager();
- }
-
- public static Application Current
- {
- get;
- private set;
- }
-
- public DataTemplates DataTemplates
- {
- get
- {
- if (this.dataTemplates == null)
- {
- this.dataTemplates = new DataTemplates();
- }
-
- return this.dataTemplates;
- }
-
- set
- {
- this.dataTemplates = value;
- }
- }
-
- public IFocusManager FocusManager
- {
- get;
- private set;
- }
-
- public InputManager InputManager
- {
- get;
- private set;
- }
-
- public Styles Styles
- {
- get
- {
- if (this.styles == null)
- {
- this.styles = new Styles();
- }
-
- return this.styles;
- }
-
- set
- {
- this.styles = value;
- }
- }
-
- public void RegisterServices()
- {
- Styler styler = new Styler();
- Locator.CurrentMutable.Register(() => this.FocusManager, typeof(IFocusManager));
- Locator.CurrentMutable.Register(() => this.InputManager, typeof(IInputManager));
- Locator.CurrentMutable.Register(() => styler, typeof(IStyler));
- }
-
- public void Run(ICloseable closable)
- {
- DispatcherFrame frame = new DispatcherFrame();
- closable.Closed += (s, e) => frame.Continue = false;
- Dispatcher.PushFrame(frame);
- }
- }
-}
diff --git a/Perspex/Binding.cs b/Perspex/Binding.cs
deleted file mode 100644
index be39daf060..0000000000
--- a/Perspex/Binding.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Perspex
-{
- public enum BindingMode
- {
- Default,
- OneWay,
- TwoWay,
- OneTime,
- OneWayToSource,
- }
-
- public struct Binding
- {
- public BindingMode Mode
- {
- get;
- set;
- }
-
- public BindingPriority Priority
- {
- get;
- set;
- }
-
- public PerspexProperty Property
- {
- get;
- set;
- }
-
- public PerspexObject Source
- {
- get;
- set;
- }
-
- public static Binding operator !(Binding binding)
- {
- return binding.WithMode(BindingMode.TwoWay);
- }
-
- public static Binding operator ~(Binding binding)
- {
- return binding.WithMode(BindingMode.TwoWay);
- }
-
- public Binding WithMode(BindingMode mode)
- {
- this.Mode = mode;
- return this;
- }
-
- public Binding WithPriority(BindingPriority priority)
- {
- this.Priority = priority;
- return this;
- }
- }
-}
diff --git a/Perspex/BindingExtensions.cs b/Perspex/BindingExtensions.cs
deleted file mode 100644
index f739682cac..0000000000
--- a/Perspex/BindingExtensions.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-// -----------------------------------------------------------------------
-//
-// Copyright 2014 MIT Licence. See licence.md for more information.
-//
-// -----------------------------------------------------------------------
-
-namespace Perspex
-{
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Perspex.Controls;
-
- ///
- /// Provides binding utility extension methods.
- ///
- public static class BindingExtensions
- {
- ///
- /// Binds a property in a template to the same property in the templated parent.
- ///
- /// The property type.
- /// The control in the template.
- /// The templated parent.
- /// The property.
- ///
- /// A disposable which can be used to terminate the binding.
- ///
- public static IDisposable TemplateBinding(
- this PerspexObject o,
- ITemplatedControl templatedParent,
- PerspexProperty property)
- {
- return o.Bind(property, templatedParent.GetObservable(property), BindingPriority.TemplatedParent);
- }
- }
-}
diff --git a/Perspex/Classes.cs b/Perspex/Classes.cs
deleted file mode 100644
index b05446fd0a..0000000000
--- a/Perspex/Classes.cs
+++ /dev/null
@@ -1,177 +0,0 @@
-// -----------------------------------------------------------------------
-//
-// Copyright 2014 MIT Licence. See licence.md for more information.
-//
-// -----------------------------------------------------------------------
-
-namespace Perspex
-{
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Collections.Specialized;
- using System.Linq;
- using System.Reactive;
- using System.Reactive.Subjects;
-
- public class Classes : ICollection, INotifyCollectionChanged
- {
- private List inner;
-
- private Subject beforeChanged
- = new Subject();
-
- private Subject changed
- = new Subject();
-
- private Subject afterChanged
- = new Subject();
-
- public Classes()
- {
- this.inner = new List();
- }
-
- public Classes(params string[] classes)
- {
- this.inner = new List(classes);
- }
-
- public Classes(IEnumerable classes)
- {
- this.inner = new List(classes);
- }
-
- public event NotifyCollectionChangedEventHandler CollectionChanged;
-
- public int Count
- {
- get { return this.inner.Count; }
- }
-
- public bool IsReadOnly
- {
- get { return false; }
- }
-
- public IObservable BeforeChanged
- {
- get { return this.beforeChanged; }
- }
-
- public IObservable Changed
- {
- get { return this.changed; }
- }
-
- public IObservable AfterChanged
- {
- get { return this.afterChanged; }
- }
-
- public void Add(string item)
- {
- this.Add(Enumerable.Repeat(item, 1));
- }
-
- public void Add(params string[] items)
- {
- this.Add((IEnumerable)items);
- }
-
- public void Add(IEnumerable items)
- {
- items = items.Except(this.inner);
-
- NotifyCollectionChangedEventArgs e = new NotifyCollectionChangedEventArgs(
- NotifyCollectionChangedAction.Add,
- items);
-
- this.beforeChanged.OnNext(e);
- this.inner.AddRange(items);
- this.RaiseChanged(e);
- }
-
- public void Clear()
- {
- NotifyCollectionChangedEventArgs e = new NotifyCollectionChangedEventArgs(
- NotifyCollectionChangedAction.Reset);
-
- this.beforeChanged.OnNext(e);
- this.inner.Clear();
- this.RaiseChanged(e);
- }
-
- public bool Contains(string item)
- {
- return this.inner.Contains(item);
- }
-
- public void CopyTo(string[] array, int arrayIndex)
- {
- this.inner.CopyTo(array, arrayIndex);
- }
-
- public IEnumerator GetEnumerator()
- {
- return this.inner.GetEnumerator();
- }
-
- public override string ToString()
- {
- return string.Join(" ", this);
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return this.inner.GetEnumerator();
- }
-
- public bool Remove(string item)
- {
- return this.Remove(Enumerable.Repeat(item, 1));
- }
-
- public bool Remove(params string[] items)
- {
- return this.Remove((IEnumerable)items);
- }
-
- public bool Remove(IEnumerable items)
- {
- items = items.Intersect(this.inner);
-
- if (items.Any())
- {
- NotifyCollectionChangedEventArgs e = new NotifyCollectionChangedEventArgs(
- NotifyCollectionChangedAction.Remove,
- items);
-
- this.beforeChanged.OnNext(e);
-
- foreach (string item in items)
- {
- this.inner.Remove(item);
- }
-
- this.RaiseChanged(e);
- return true;
- }
- else
- {
- return false;
- }
- }
-
- private void RaiseChanged(NotifyCollectionChangedEventArgs e)
- {
- if (this.CollectionChanged != null)
- {
- this.CollectionChanged(this, e);
- }
-
- this.changed.OnNext(e);
- this.afterChanged.OnNext(e);
- }
- }
-}
diff --git a/Perspex/Contract.cs b/Perspex/Contract.cs
deleted file mode 100644
index 18a3f65802..0000000000
--- a/Perspex/Contract.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-// -----------------------------------------------------------------------
-//
-// Copyright 2014 MIT Licence. See licence.md for more information.
-//
-// -----------------------------------------------------------------------
-
-namespace Perspex
-{
- using System;
-
- internal static class Contract
- {
- public static void Requires(bool condition) where TException : Exception, new()
- {
-#if DEBUG
- if (!condition)
- {
- throw new TException();
- }
-#endif
- }
- }
-}
diff --git a/Perspex/ControlExtensions.cs b/Perspex/ControlExtensions.cs
deleted file mode 100644
index 777aeca917..0000000000
--- a/Perspex/ControlExtensions.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-// -----------------------------------------------------------------------
-//
-// Copyright 2014 MIT Licence. See licence.md for more information.
-//
-// -----------------------------------------------------------------------
-
-namespace Perspex
-{
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Perspex.Controls;
- using Perspex.Styling;
-
- public static class ControlExtensions
- {
- public static IEnumerable GetTemplateControls(this ITemplatedControl control)
- {
- return GetTemplateControls(control, (IVisual)control);
- }
-
- public static IEnumerable GetTemplateControls(ITemplatedControl templated, IVisual parent)
- {
- IVisual visual = parent as IVisual;
-
- foreach (IVisual child in visual.VisualChildren.OfType().Where(x => x.TemplatedParent == templated))
- {
- yield return (Control)child;
-
- foreach (IVisual grandchild in GetTemplateControls(templated, child))
- {
- yield return (Control)grandchild;
- }
- }
- }
- }
-}
diff --git a/Perspex/Controls/Border.cs b/Perspex/Controls/Border.cs
deleted file mode 100644
index bd0be84e28..0000000000
--- a/Perspex/Controls/Border.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-// -----------------------------------------------------------------------
-//
-// Copyright 2014 MIT Licence. See licence.md for more information.
-//
-// -----------------------------------------------------------------------
-
-namespace Perspex.Controls
-{
- using System;
- using System.Reactive.Linq;
- using Perspex.Layout;
- using Perspex.Media;
-
- public class Border : Decorator
- {
- static Border()
- {
- AffectsRender(BackgroundProperty);
- AffectsRender(BorderBrushProperty);
- }
-
- public override void Render(IDrawingContext context)
- {
- Brush background = this.Background;
- Brush borderBrush = this.BorderBrush;
- double borderThickness = this.BorderThickness;
- Rect rect = new Rect(this.ActualSize).Deflate(BorderThickness / 2);
-
- if (background != null)
- {
- context.FillRectange(background, rect);
- }
-
- if (borderBrush != null && borderThickness > 0)
- {
- context.DrawRectange(new Pen(borderBrush, borderThickness), rect);
- }
- }
-
- protected override Size ArrangeOverride(Size finalSize)
- {
- Control content = this.Content;
-
- if (content != null)
- {
- Thickness padding = this.Padding + new Thickness(this.BorderThickness);
- content.Arrange(new Rect(finalSize).Deflate(padding));
- }
-
- return finalSize;
- }
-
- protected override Size MeasureOverride(Size availableSize)
- {
- return LayoutHelper.MeasureDecorator(
- this,
- this.Content,
- availableSize,
- this.Padding + new Thickness(this.BorderThickness));
- }
- }
-}
diff --git a/Perspex/Controls/Button.cs b/Perspex/Controls/Button.cs
deleted file mode 100644
index 36452bab3b..0000000000
--- a/Perspex/Controls/Button.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-// -----------------------------------------------------------------------
-//
-// Copyright 2013 MIT Licence. See licence.md for more information.
-//
-// -----------------------------------------------------------------------
-
-namespace Perspex.Controls
-{
- using System;
-
- public class Button : ContentControl
- {
- public static readonly RoutedEvent ClickEvent =
- RoutedEvent.Register