diff --git a/tutorial/delphi/DelphiClient/DelphiClient.dpr b/tutorial/delphi/DelphiClient/DelphiClient.dpr
new file mode 100644
index 0000000..0f380b0
--- /dev/null
+++ b/tutorial/delphi/DelphiClient/DelphiClient.dpr
@@ -0,0 +1,114 @@
+(*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *)
+program DelphiClient;
+
+{$APPTYPE CONSOLE}
+{$D 'Copyright (c) 2012 The Apache Software Foundation'}
+
+uses
+  SysUtils,
+  Generics.Collections,
+  Thrift in '..\..\..\lib\delphi\src\Thrift.pas',
+  Thrift.Collections in '..\..\..\lib\delphi\src\Thrift.Collections.pas',
+  Thrift.Console in '..\..\..\lib\delphi\src\Thrift.Console.pas',
+  Thrift.Utils in '..\..\..\lib\delphi\src\Thrift.Utils.pas',
+  Thrift.Stream in '..\..\..\lib\delphi\src\Thrift.Stream.pas',
+  Thrift.Protocol in '..\..\..\lib\delphi\src\Thrift.Protocol.pas',
+  Thrift.Server in '..\..\..\lib\delphi\src\Thrift.Server.pas',
+  Thrift.Transport in '..\..\..\lib\delphi\src\Thrift.Transport.pas',
+  Shared in '..\..\gen-delphi\Shared.pas',
+  Tutorial in '..\..\gen-delphi\Tutorial.pas';
+
+
+type
+  DelphiTutorialClient = class
+  public
+    class procedure Main;
+  end;
+
+
+//--- DelphiTutorialClient ---------------------------------------
+
+
+class procedure DelphiTutorialClient.Main;
+var transport : ITransport;
+    protocol  : IProtocol;
+    client    : TCalculator.Iface;
+    work      : IWork;
+    sum, quotient, diff : Integer;
+    log       : ISharedStruct;
+begin
+  try
+    transport := TSocketImpl.Create( 'localhost', 9090);
+    protocol  := TBinaryProtocolImpl.Create( transport);
+    client    := TCalculator.TClient.Create( protocol);
+
+    transport.Open;
+
+    client.ping;
+    Console.WriteLine('ping()');
+
+    sum := client.add( 1, 1);
+    Console.WriteLine( Format( '1+1=%d', [sum]));
+
+    work := TWorkImpl.Create;
+
+    work.Op   := TOperation.DIVIDE;
+    work.Num1 := 1;
+    work.Num2 := 0;
+    try
+      quotient := client.calculate(1, work);
+      Console.WriteLine( 'Whoa we can divide by 0');
+      Console.WriteLine( Format('1/0=%d',[quotient]));
+    except
+      on io: TInvalidOperation
+      do Console.WriteLine( 'Invalid operation: ' + io.Why);
+    end;
+
+    work.Op   := TOperation.SUBTRACT;
+    work.Num1 := 15;
+    work.Num2 := 10;
+    try
+      diff := client.calculate( 1, work);
+      Console.WriteLine( Format('15-10=%d', [diff]));
+    except
+      on io: TInvalidOperation
+      do Console.WriteLine( 'Invalid operation: ' + io.Why);
+    end;
+
+    log := client.getStruct(1);
+    Console.WriteLine( Format( 'Check log: %s', [log.Value]));
+
+    transport.Close();
+
+  except
+    on e : Exception
+    do Console.WriteLine( e.ClassName+': '+e.Message);
+  end;
+end;
+
+
+begin
+  try
+    DelphiTutorialClient.Main;
+  except
+    on E: Exception do
+      Writeln(E.ClassName, ': ', E.Message);
+  end;
+end.
diff --git a/tutorial/delphi/DelphiClient/DelphiClient.dproj b/tutorial/delphi/DelphiClient/DelphiClient.dproj
new file mode 100644
index 0000000..ab0a1c1
--- /dev/null
+++ b/tutorial/delphi/DelphiClient/DelphiClient.dproj
@@ -0,0 +1,119 @@
+﻿	<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+		<PropertyGroup>
+			<ProjectGuid>{2B8FB3A1-2F9E-4883-8C53-0F56220B34F6}</ProjectGuid>
+			<MainSource>DelphiClient.dpr</MainSource>
+			<ProjectVersion>12.3</ProjectVersion>
+			<Basis>True</Basis>
+			<Config Condition="'$(Config)'==''">Debug</Config>
+			<Platform>Win32</Platform>
+			<AppType>Console</AppType>
+			<FrameworkType>None</FrameworkType>
+			<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Config)'=='Basis' or '$(Base)'!=''">
+			<Base>true</Base>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+			<Cfg_1>true</Cfg_1>
+			<CfgParent>Base</CfgParent>
+			<Base>true</Base>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+			<Cfg_2>true</Cfg_2>
+			<CfgParent>Base</CfgParent>
+			<Base>true</Base>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Base)'!=''">
+			<DCC_UnitSearchPath>..\..\..\lib\delphi\src;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+			<DCC_ImageBase>00400000</DCC_ImageBase>
+			<DCC_DcuOutput>.\dcu\$(Config)\$(Platform)</DCC_DcuOutput>
+			<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
+			<DCC_ExeOutput>..\bin\$(Config)\$(Platform)</DCC_ExeOutput>
+			<DCC_E>false</DCC_E>
+			<DCC_N>false</DCC_N>
+			<DCC_S>false</DCC_S>
+			<DCC_F>false</DCC_F>
+			<DCC_K>false</DCC_K>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Cfg_1)'!=''">
+			<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+			<DCC_Optimize>false</DCC_Optimize>
+			<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Cfg_2)'!=''">
+			<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+			<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+			<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+			<DCC_DebugInformation>false</DCC_DebugInformation>
+		</PropertyGroup>
+		<ItemGroup>
+			<DelphiCompile Include="DelphiClient.dpr">
+				<MainSource>MainSource</MainSource>
+			</DelphiCompile>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Collections.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Console.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Utils.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Stream.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Protocol.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Server.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Transport.pas"/>
+			<DCCReference Include="..\..\gen-delphi\Shared.pas"/>
+			<DCCReference Include="..\..\gen-delphi\Tutorial.pas"/>
+			<BuildConfiguration Include="Release">
+				<Key>Cfg_2</Key>
+				<CfgParent>Base</CfgParent>
+			</BuildConfiguration>
+			<BuildConfiguration Include="Basis">
+				<Key>Base</Key>
+			</BuildConfiguration>
+			<BuildConfiguration Include="Debug">
+				<Key>Cfg_1</Key>
+				<CfgParent>Base</CfgParent>
+			</BuildConfiguration>
+		</ItemGroup>
+		<Import Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')" Project="$(BDS)\Bin\CodeGear.Delphi.Targets"/>
+		<Import Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')" Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj"/>
+		<ProjectExtensions>
+			<Borland.Personality>Delphi.Personality.12</Borland.Personality>
+			<Borland.ProjectType/>
+			<BorlandProject>
+				<Delphi.Personality>
+					<VersionInfo>
+						<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
+						<VersionInfo Name="AutoIncBuild">False</VersionInfo>
+						<VersionInfo Name="MajorVer">1</VersionInfo>
+						<VersionInfo Name="MinorVer">0</VersionInfo>
+						<VersionInfo Name="Release">0</VersionInfo>
+						<VersionInfo Name="Build">0</VersionInfo>
+						<VersionInfo Name="Debug">False</VersionInfo>
+						<VersionInfo Name="PreRelease">False</VersionInfo>
+						<VersionInfo Name="Special">False</VersionInfo>
+						<VersionInfo Name="Private">False</VersionInfo>
+						<VersionInfo Name="DLL">False</VersionInfo>
+						<VersionInfo Name="Locale">1033</VersionInfo>
+						<VersionInfo Name="CodePage">1252</VersionInfo>
+					</VersionInfo>
+					<VersionInfoKeys>
+						<VersionInfoKeys Name="CompanyName"/>
+						<VersionInfoKeys Name="FileDescription">Thrift Tutorial</VersionInfoKeys>
+						<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
+						<VersionInfoKeys Name="InternalName">DelphiClient</VersionInfoKeys>
+						<VersionInfoKeys Name="LegalCopyright">Copyright © 2012 The Apache Software Foundation</VersionInfoKeys>
+						<VersionInfoKeys Name="LegalTrademarks"/>
+						<VersionInfoKeys Name="OriginalFilename">DelphiClient.exe</VersionInfoKeys>
+						<VersionInfoKeys Name="ProductName">Thrift</VersionInfoKeys>
+						<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
+						<VersionInfoKeys Name="Comments"/>
+					</VersionInfoKeys>
+					<Source>
+						<Source Name="MainSource">DelphiClient.dpr</Source>
+					</Source>
+				</Delphi.Personality>
+				<Platforms>
+					<Platform value="Win32">True</Platform>
+				</Platforms>
+			</BorlandProject>
+			<ProjectFileVersion>12</ProjectFileVersion>
+		</ProjectExtensions>
+	</Project>
diff --git a/tutorial/delphi/DelphiServer/DelphiServer.dpr b/tutorial/delphi/DelphiServer/DelphiServer.dpr
new file mode 100644
index 0000000..9d54a2e
--- /dev/null
+++ b/tutorial/delphi/DelphiServer/DelphiServer.dpr
@@ -0,0 +1,173 @@
+(*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *)
+program DelphiServer;
+
+{$APPTYPE CONSOLE}
+{$D 'Copyright (c) 2012 The Apache Software Foundation'}
+
+{$Q+}     // throws exceptions on numeric overflows
+
+uses
+  SysUtils,
+  Generics.Collections,
+  Thrift in '..\..\..\lib\delphi\src\Thrift.pas',
+  Thrift.Collections in '..\..\..\lib\delphi\src\Thrift.Collections.pas',
+  Thrift.Console in '..\..\..\lib\delphi\src\Thrift.Console.pas',
+  Thrift.Utils in '..\..\..\lib\delphi\src\Thrift.Utils.pas',
+  Thrift.Stream in '..\..\..\lib\delphi\src\Thrift.Stream.pas',
+  Thrift.Protocol in '..\..\..\lib\delphi\src\Thrift.Protocol.pas',
+  Thrift.Server in '..\..\..\lib\delphi\src\Thrift.Server.pas',
+  Thrift.Transport in '..\..\..\lib\delphi\src\Thrift.Transport.pas',
+  Shared in '..\..\gen-delphi\Shared.pas',
+  Tutorial in '..\..\gen-delphi\Tutorial.pas';
+
+
+type
+  TCalculatorHandler = class( TInterfacedObject, TCalculator.Iface)
+  protected
+    FLog : TDictionary< Integer, ISharedStruct>;
+
+    // TSharedService.Iface
+    function  getStruct(key: Integer): ISharedStruct;
+
+    // TCalculator.Iface
+    procedure ping();
+    function  add(num1: Integer; num2: Integer): Integer;
+    function  calculate(logid: Integer; const w: IWork): Integer;
+    procedure zip();
+
+  public
+    constructor Create;
+    destructor Destroy;  override;
+
+  end;
+
+  DelphiTutorialServer = class
+  public
+    class procedure Main;
+  end;
+
+
+//--- TCalculatorHandler ---------------------------------------------------
+
+
+constructor TCalculatorHandler.Create;
+begin
+  inherited Create;
+  FLog := TDictionary< Integer, ISharedStruct>.Create();
+end;
+
+
+destructor TCalculatorHandler.Destroy;
+begin
+  try
+    FreeAndNil( FLog);
+  finally
+    inherited Destroy;
+  end;
+end;
+
+
+procedure TCalculatorHandler.ping;
+begin
+  Console.WriteLine( 'ping()');
+end;
+
+
+function TCalculatorHandler.add(num1: Integer; num2: Integer): Integer;
+begin
+  Console.WriteLine( Format( 'add( %d, %d)', [num1, num2]));
+  result := num1 + num2;
+end;
+
+
+function TCalculatorHandler.calculate(logid: Integer; const w: IWork): Integer;
+var entry : ISharedStruct;
+begin
+  try
+    Console.WriteLine( Format('calculate( %d, [%d,%d,%d])', [logid, Ord(w.Op), w.Num1, w.Num2]));
+
+    case w.Op of
+      TOperation.ADD      :  result := w.Num1 + w.Num2;
+      TOperation.SUBTRACT :  result := w.Num1 - w.Num2;
+      TOperation.MULTIPLY :  result := w.Num1 * w.Num2;
+      TOperation.DIVIDE   :  result := Round( w.Num1 / w.Num2);
+    else
+      raise TInvalidOperation.Create( Ord(w.Op), 'Unknown operation');
+    end;
+
+  except
+    on e:Thrift.TException do raise;  // let Thrift Exceptions pass through
+    on e:Exception do raise TInvalidOperation.Create( Ord(w.Op), e.Message);  // repackage all other
+  end;
+
+  entry := TSharedStructImpl.Create;
+  entry.Key   := logid;
+  entry.Value := IntToStr( result);
+  FLog.AddOrSetValue( logid, entry);
+end;
+
+
+function TCalculatorHandler.getStruct(key: Integer): ISharedStruct;
+begin
+  Console.WriteLine( Format( 'getStruct(%d)', [key]));
+  result := FLog[key];
+end;
+
+
+procedure TCalculatorHandler.zip;
+begin
+  Console.WriteLine( 'zip()');
+end;
+
+
+//--- DelphiTutorialServer ----------------------------------------------------------------------
+
+
+class procedure DelphiTutorialServer.Main;
+var handler   : TCalculator.Iface;
+    processor : IProcessor;
+    transport : IServerTransport;
+    server    : IServer;
+begin
+  try
+    handler   := TCalculatorHandler.Create;
+    processor := TCalculator.TProcessorImpl.Create( handler);
+    transport := TServerSocketImpl.Create( 9090);
+    server    := TSimpleServer.Create( processor, transport);
+
+    Console.WriteLine( 'Starting the server...');
+    server.Serve();
+
+  except
+    on e: Exception do Console.WriteLine( e.Message);
+  end;
+
+  Console.WriteLine('done.');
+end;
+
+
+begin
+  try
+    DelphiTutorialServer.Main;
+  except
+    on E: Exception do
+      Writeln(E.ClassName, ': ', E.Message);
+  end;
+end.
diff --git a/tutorial/delphi/DelphiServer/DelphiServer.dproj b/tutorial/delphi/DelphiServer/DelphiServer.dproj
new file mode 100644
index 0000000..c5071a3
--- /dev/null
+++ b/tutorial/delphi/DelphiServer/DelphiServer.dproj
@@ -0,0 +1,118 @@
+﻿	<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+		<PropertyGroup>
+			<ProjectGuid>{2B8FB3A1-2F9E-4883-8C53-0F56220B34F6}</ProjectGuid>
+			<MainSource>DelphiServer.dpr</MainSource>
+			<ProjectVersion>12.3</ProjectVersion>
+			<Basis>True</Basis>
+			<Config Condition="'$(Config)'==''">Debug</Config>
+			<Platform>Win32</Platform>
+			<AppType>Console</AppType>
+			<FrameworkType>None</FrameworkType>
+			<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Config)'=='Basis' or '$(Base)'!=''">
+			<Base>true</Base>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+			<Cfg_1>true</Cfg_1>
+			<CfgParent>Base</CfgParent>
+			<Base>true</Base>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+			<Cfg_2>true</Cfg_2>
+			<CfgParent>Base</CfgParent>
+			<Base>true</Base>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Base)'!=''">
+			<DCC_ImageBase>00400000</DCC_ImageBase>
+			<DCC_DcuOutput>.\dcu\$(Config)\$(Platform)</DCC_DcuOutput>
+			<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
+			<DCC_ExeOutput>..\bin\$(Config)\$(Platform)</DCC_ExeOutput>
+			<DCC_E>false</DCC_E>
+			<DCC_N>false</DCC_N>
+			<DCC_S>false</DCC_S>
+			<DCC_F>false</DCC_F>
+			<DCC_K>false</DCC_K>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Cfg_1)'!=''">
+			<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+			<DCC_Optimize>false</DCC_Optimize>
+			<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+		</PropertyGroup>
+		<PropertyGroup Condition="'$(Cfg_2)'!=''">
+			<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+			<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+			<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+			<DCC_DebugInformation>false</DCC_DebugInformation>
+		</PropertyGroup>
+		<ItemGroup>
+			<DelphiCompile Include="DelphiServer.dpr">
+				<MainSource>MainSource</MainSource>
+			</DelphiCompile>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Collections.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Console.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Utils.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Stream.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Protocol.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Server.pas"/>
+			<DCCReference Include="..\..\..\lib\delphi\src\Thrift.Transport.pas"/>
+			<DCCReference Include="..\..\gen-delphi\Shared.pas"/>
+			<DCCReference Include="..\..\gen-delphi\Tutorial.pas"/>
+			<BuildConfiguration Include="Release">
+				<Key>Cfg_2</Key>
+				<CfgParent>Base</CfgParent>
+			</BuildConfiguration>
+			<BuildConfiguration Include="Basis">
+				<Key>Base</Key>
+			</BuildConfiguration>
+			<BuildConfiguration Include="Debug">
+				<Key>Cfg_1</Key>
+				<CfgParent>Base</CfgParent>
+			</BuildConfiguration>
+		</ItemGroup>
+		<Import Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')" Project="$(BDS)\Bin\CodeGear.Delphi.Targets"/>
+		<Import Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')" Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj"/>
+		<ProjectExtensions>
+			<Borland.Personality>Delphi.Personality.12</Borland.Personality>
+			<Borland.ProjectType/>
+			<BorlandProject>
+				<Delphi.Personality>
+					<VersionInfo>
+						<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
+						<VersionInfo Name="AutoIncBuild">False</VersionInfo>
+						<VersionInfo Name="MajorVer">1</VersionInfo>
+						<VersionInfo Name="MinorVer">0</VersionInfo>
+						<VersionInfo Name="Release">0</VersionInfo>
+						<VersionInfo Name="Build">0</VersionInfo>
+						<VersionInfo Name="Debug">False</VersionInfo>
+						<VersionInfo Name="PreRelease">False</VersionInfo>
+						<VersionInfo Name="Special">False</VersionInfo>
+						<VersionInfo Name="Private">False</VersionInfo>
+						<VersionInfo Name="DLL">False</VersionInfo>
+						<VersionInfo Name="Locale">1033</VersionInfo>
+						<VersionInfo Name="CodePage">1252</VersionInfo>
+					</VersionInfo>
+					<VersionInfoKeys>
+						<VersionInfoKeys Name="CompanyName"/>
+						<VersionInfoKeys Name="FileDescription">Thrift Tutorial</VersionInfoKeys>
+						<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
+						<VersionInfoKeys Name="InternalName">DelphiServer</VersionInfoKeys>
+						<VersionInfoKeys Name="LegalCopyright">Copyright © 2012 The Apache Software Foundation</VersionInfoKeys>
+						<VersionInfoKeys Name="LegalTrademarks"/>
+						<VersionInfoKeys Name="OriginalFilename">DelphiServer.exe</VersionInfoKeys>
+						<VersionInfoKeys Name="ProductName">Thrift</VersionInfoKeys>
+						<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
+						<VersionInfoKeys Name="Comments"/>
+					</VersionInfoKeys>
+					<Source>
+						<Source Name="MainSource">DelphiServer.dpr</Source>
+					</Source>
+				</Delphi.Personality>
+				<Platforms>
+					<Platform value="Win32">True</Platform>
+				</Platforms>
+			</BorlandProject>
+			<ProjectFileVersion>12</ProjectFileVersion>
+		</ProjectExtensions>
+	</Project>
diff --git a/tutorial/delphi/Tutorial.groupproj b/tutorial/delphi/Tutorial.groupproj
new file mode 100644
index 0000000..486e612
--- /dev/null
+++ b/tutorial/delphi/Tutorial.groupproj
@@ -0,0 +1,48 @@
+﻿	<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+		<PropertyGroup>
+			<ProjectGuid>{3D042C7F-3EF2-4574-8304-AB7FB79F814C}</ProjectGuid>
+		</PropertyGroup>
+		<ItemGroup>
+			<Projects Include="DelphiServer\DelphiServer.dproj">
+				<Dependencies/>
+			</Projects>
+			<Projects Include="DelphiClient\DelphiClient.dproj">
+				<Dependencies/>
+			</Projects>
+		</ItemGroup>
+		<ProjectExtensions>
+			<Borland.Personality>Default.Personality.12</Borland.Personality>
+			<Borland.ProjectType/>
+			<BorlandProject>
+				<Default.Personality/>
+			</BorlandProject>
+		</ProjectExtensions>
+		<Target Name="DelphiServer">
+			<MSBuild Projects="DelphiServer\DelphiServer.dproj"/>
+		</Target>
+		<Target Name="DelphiServer:Clean">
+			<MSBuild Projects="DelphiServer\DelphiServer.dproj" Targets="Clean"/>
+		</Target>
+		<Target Name="DelphiServer:Make">
+			<MSBuild Projects="DelphiServer\DelphiServer.dproj" Targets="Make"/>
+		</Target>
+		<Target Name="DelphiClient">
+			<MSBuild Projects="DelphiClient\DelphiClient.dproj"/>
+		</Target>
+		<Target Name="DelphiClient:Clean">
+			<MSBuild Projects="DelphiClient\DelphiClient.dproj" Targets="Clean"/>
+		</Target>
+		<Target Name="DelphiClient:Make">
+			<MSBuild Projects="DelphiClient\DelphiClient.dproj" Targets="Make"/>
+		</Target>
+		<Target Name="Build">
+			<CallTarget Targets="DelphiServer;DelphiClient"/>
+		</Target>
+		<Target Name="Clean">
+			<CallTarget Targets="DelphiServer:Clean;DelphiClient:Clean"/>
+		</Target>
+		<Target Name="Make">
+			<CallTarget Targets="DelphiServer:Make;DelphiClient:Make"/>
+		</Target>
+		<Import Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')" Project="$(BDS)\Bin\CodeGear.Group.Targets"/>
+	</Project>
