diff --git a/src/Markup/Perspex.Markup/Binding/ExpressionObserver.cs b/src/Markup/Perspex.Markup/Binding/ExpressionObserver.cs
index bd0b08b7c3..c50868b549 100644
--- a/src/Markup/Perspex.Markup/Binding/ExpressionObserver.cs
+++ b/src/Markup/Perspex.Markup/Binding/ExpressionObserver.cs
@@ -2,15 +2,13 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Reactive;
using System.Reactive.Disposables;
namespace Perspex.Markup.Binding
{
///
- /// Observes the value of an expression on a root object.
+ /// Observes and sets the value of an expression on an object.
///
public class ExpressionObserver : ObservableBase
{
diff --git a/src/Markup/Perspex.Markup/Binding/ExpressionSubject.cs b/src/Markup/Perspex.Markup/Binding/ExpressionSubject.cs
new file mode 100644
index 0000000000..e2e94daf7c
--- /dev/null
+++ b/src/Markup/Perspex.Markup/Binding/ExpressionSubject.cs
@@ -0,0 +1,48 @@
+// Copyright (c) The Perspex Project. All rights reserved.
+// Licensed under the MIT license. See licence.md file in the project root for full license information.
+
+using System;
+using System.Reactive.Linq;
+using System.Reactive.Subjects;
+
+namespace Perspex.Markup.Binding
+{
+ ///
+ /// Turns an into a subject that can be bound two-ways.
+ ///
+ public class ExpressionSubject : ISubject