diff --git a/KestrelHttpServer.sln b/KestrelHttpServer.sln
index 9b0ccec28c..fbfe94da08 100644
--- a/KestrelHttpServer.sln
+++ b/KestrelHttpServer.sln
@@ -12,6 +12,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
global.json = global.json
EndProjectSection
EndProject
+Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "SampleApp", "src\SampleApp\SampleApp.kproj", "{2C3CB3DC-EEBF-4F52-9E1C-4F2F972E76C3}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -26,6 +28,10 @@ Global
{37F3BFB2-6454-49E5-9D7F-581BF755CCFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{37F3BFB2-6454-49E5-9D7F-581BF755CCFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{37F3BFB2-6454-49E5-9D7F-581BF755CCFE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2C3CB3DC-EEBF-4F52-9E1C-4F2F972E76C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2C3CB3DC-EEBF-4F52-9E1C-4F2F972E76C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2C3CB3DC-EEBF-4F52-9E1C-4F2F972E76C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2C3CB3DC-EEBF-4F52-9E1C-4F2F972E76C3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/CallContext.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/CallContext.cs
new file mode 100644
index 0000000000..39b11b7ac3
--- /dev/null
+++ b/src/Microsoft.AspNet.Server.Kestrel/Http/CallContext.cs
@@ -0,0 +1,51 @@
+// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using Microsoft.AspNet.HttpFeature;
+using System;
+using System.Collections.Generic;
+using System.IO;
+
+namespace Microsoft.AspNet.Server.Kestrel
+{
+ ///
+ /// Summary description for CallContext
+ ///
+ public class CallContext :
+ IHttpRequestFeature,
+ IHttpResponseFeature
+ {
+ public CallContext()
+ {
+ ((IHttpResponseFeature)this).StatusCode = 200;
+ }
+
+ Stream IHttpResponseFeature.Body { get; set; }
+
+ Stream IHttpRequestFeature.Body { get; set; }
+
+ IDictionary IHttpResponseFeature.Headers { get; set; }
+
+ IDictionary IHttpRequestFeature.Headers { get; set; }
+
+ string IHttpRequestFeature.Method { get; set; }
+
+ string IHttpRequestFeature.Path { get; set; }
+
+ string IHttpRequestFeature.PathBase { get; set; }
+
+ string IHttpRequestFeature.Protocol { get; set; }
+
+ string IHttpRequestFeature.QueryString { get; set; }
+
+ string IHttpResponseFeature.ReasonPhrase { get; set; }
+
+ string IHttpRequestFeature.Scheme { get; set; }
+
+ int IHttpResponseFeature.StatusCode { get; set; }
+
+ void IHttpResponseFeature.OnSendingHeaders(Action