diff --git a/lib/delphi/test/TestServerEvents.pas b/lib/delphi/test/TestServerEvents.pas
index 8e931c4..2e776d2 100644
--- a/lib/delphi/test/TestServerEvents.pas
+++ b/lib/delphi/test/TestServerEvents.pas
@@ -47,128 +47,128 @@
 
 
   TProcessorEventsImpl = class( TInterfacedObject, IProcessorEvents)
-  protected
-    FReqs : Integer;
-    // IProcessorEvents
-    procedure Processing( const transport : ITransport);
+  protected
+    FReqs : Integer;
+    // IProcessorEvents
+    procedure Processing( const transport : ITransport);
     function  CreateRequestContext( const aFunctionName : string) : IRequestEvents;
     procedure CleanupContext;
   public
     constructor Create;
-  end;
+  end;
 
 
   TServerEventsImpl = class( TInterfacedObject, IServerEvents)
-  protected
-    // IServerEvents
-    procedure PreServe;
-    procedure PreAccept;
-    function  CreateProcessingContext( const input, output : IProtocol) : IProcessorEvents;
-  end;
+  protected
+    // IServerEvents
+    procedure PreServe;
+    procedure PreAccept;
+    function  CreateProcessingContext( const input, output : IProtocol) : IProcessorEvents;
+  end;
 
 
 implementation
 
 { TServerEventsImpl }
-
+
 procedure TServerEventsImpl.PreServe;
-begin
-  Console.WriteLine('ServerEvents: Server starting to serve requests');
-end;
-
-
+begin
+  Console.WriteLine('ServerEvents: Server starting to serve requests');
+end;
+
+
 procedure TServerEventsImpl.PreAccept;
-begin
-  Console.WriteLine('ServerEvents: Server transport is ready to accept incoming calls');
-end;
-
-
+begin
+  Console.WriteLine('ServerEvents: Server transport is ready to accept incoming calls');
+end;
+
+
 function TServerEventsImpl.CreateProcessingContext(const input, output: IProtocol): IProcessorEvents;
-begin
-  result := TProcessorEventsImpl.Create;
-end;
-
-
+begin
+  result := TProcessorEventsImpl.Create;
+end;
+
+
 { TProcessorEventsImpl }
-
+
 constructor TProcessorEventsImpl.Create;
-begin
-  inherited Create;
-  FReqs := 0;
-  Console.WriteLine('ProcessorEvents: Client connected, processing begins');
-end;
-
-procedure TProcessorEventsImpl.Processing(const transport: ITransport);
-begin
-  Console.WriteLine('ProcessorEvents: Processing of incoming request begins');
-end;
-
-
-function TProcessorEventsImpl.CreateRequestContext( const aFunctionName: string): IRequestEvents;
-begin
-  result := TRequestEventsImpl.Create;
-  Inc( FReqs);
-end;
-
-
-procedure TProcessorEventsImpl.CleanupContext;
-begin
-  Console.WriteLine( 'ProcessorEvents: completed after handling '+IntToStr(FReqs)+' requests.');
-end;
-
-
-{ TRequestEventsImpl }
-
+begin
+  inherited Create;
+  FReqs := 0;
+  Console.WriteLine('ProcessorEvents: Client connected, processing begins');
+end;
+
+procedure TProcessorEventsImpl.Processing(const transport: ITransport);
+begin
+  Console.WriteLine('ProcessorEvents: Processing of incoming request begins');
+end;
+
+
+function TProcessorEventsImpl.CreateRequestContext( const aFunctionName: string): IRequestEvents;
+begin
+  result := TRequestEventsImpl.Create;
+  Inc( FReqs);
+end;
+
+
+procedure TProcessorEventsImpl.CleanupContext;
+begin
+  Console.WriteLine( 'ProcessorEvents: completed after handling '+IntToStr(FReqs)+' requests.');
+end;
+
+
+{ TRequestEventsImpl }
+
 
 constructor TRequestEventsImpl.Create;
-begin
-  inherited Create;
-  FStart := Now;
-  Console.WriteLine('RequestEvents: New request');
-end;
-
-
+begin
+  inherited Create;
+  FStart := Now;
+  Console.WriteLine('RequestEvents: New request');
+end;
+
+
 procedure TRequestEventsImpl.PreRead;
-begin
-  Console.WriteLine('RequestEvents: Reading request message ...');
-end;
-
+begin
+  Console.WriteLine('RequestEvents: Reading request message ...');
+end;
+
 
 procedure TRequestEventsImpl.PostRead;
-begin
-  Console.WriteLine('RequestEvents: Reading request message completed');
-end;
+begin
+  Console.WriteLine('RequestEvents: Reading request message completed');
+end;
 
 procedure TRequestEventsImpl.PreWrite;
-begin
-  Console.WriteLine('RequestEvents: Writing response message ...');
-end;
-
+begin
+  Console.WriteLine('RequestEvents: Writing response message ...');
+end;
+
 
 procedure TRequestEventsImpl.PostWrite;
-begin
-  Console.WriteLine('RequestEvents: Writing response message completed');
-end;
-
+begin
+  Console.WriteLine('RequestEvents: Writing response message completed');
+end;
+
 
 procedure TRequestEventsImpl.OnewayComplete;
-begin
-  Console.WriteLine('RequestEvents: Oneway message processed');
-end;
-
+begin
+  Console.WriteLine('RequestEvents: Oneway message processed');
+end;
+
 
 procedure TRequestEventsImpl.UnhandledError(const e: Exception);
-begin
-  Console.WriteLine('RequestEvents: Unhandled exception of type '+e.classname);
-end;
-
-
-procedure TRequestEventsImpl.CleanupContext;
-var millis : Double;
-begin
-  millis := (Now - FStart) * (24*60*60*1000);
-  Console.WriteLine( 'Request processing completed in '+IntToStr(Round(millis))+' ms');
-end;
-
-
+begin
+  Console.WriteLine('RequestEvents: Unhandled exception of type '+e.classname);
+end;
+
+
+procedure TRequestEventsImpl.CleanupContext;
+var millis : Double;
+begin
+  millis := (Now - FStart) * (24*60*60*1000);
+  Console.WriteLine( 'Request processing completed in '+IntToStr(Round(millis))+' ms');
+end;
+
+
 end.
