diff --git a/src-installer/RDPWInst.dpr b/src-installer/RDPWInst.dpr
index 6f934f5..b4489bd 100644
--- a/src-installer/RDPWInst.dpr
+++ b/src-installer/RDPWInst.dpr
@@ -1,5 +1,5 @@
 {
-  Copyright 2014 Stas'M Corp.
+  Copyright 2015 Stas'M Corp.
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -282,32 +282,45 @@ var
   hSvc: THandle;
   Code: DWORD;
   pch: PWideChar;
+  procedure ExitError(Func: String; ErrorCode: DWORD);
+  begin
+    if hSC > 0 then
+      CloseServiceHandle(hSC);
+    if hSvc > 0 then
+      CloseServiceHandle(hSvc);
+    Writeln('[-] ', Func, ' error (code ', ErrorCode, ').');
+  end;
 begin
+  hSC := 0;
+  hSvc := 0;
   Writeln('[*] Starting ', SvcName, '...');
   hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT);
   if hSC = 0 then
   begin
-    Code := GetLastError;
-    Writeln('[-] OpenSCManager error (code ', Code, ').');
+    ExitError('OpenSCManager', GetLastError);
     Exit;
   end;
 
   hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_START);
   if hSvc = 0 then
   begin
-    CloseServiceHandle(hSC);
-    Code := GetLastError;
-    Writeln('[-] OpenService error (code ', Code, ').');
+    ExitError('OpenService', GetLastError);
     Exit;
   end;
 
   pch := nil;
   if not StartService(hSvc, 0, pch) then begin
-    CloseServiceHandle(hSvc);
-    CloseServiceHandle(hSC);
     Code := GetLastError;
-    Writeln('[-] StartService error (code ', Code, ').');
-    Exit;
+    if Code = 1056 then begin // Service already started
+      Sleep(2000);            // or SCM hasn't registered killed process
+      if not StartService(hSvc, 0, pch) then begin
+        ExitError('StartService', Code);
+        Exit;
+      end;
+    end else begin
+      ExitError('StartService', Code);
+      Exit;
+    end;
   end;
   CloseServiceHandle(hSvc);
   CloseServiceHandle(hSC);
diff --git a/src-installer/RDPWInst.dproj b/src-installer/RDPWInst.dproj
index 78b7b03..3d44444 100644
--- a/src-installer/RDPWInst.dproj
+++ b/src-installer/RDPWInst.dproj
@@ -41,14 +41,14 @@
 			
 				Base
 			
-			
-				Cfg_2
-				Base
-			
 			
 				Cfg_1
 				Base
 			
+			
+				Cfg_2
+				Base
+			
 		
 		
 		
diff --git a/src-installer/resource.res b/src-installer/resource.res
index 8bcc9dd..402086a 100644
Binary files a/src-installer/resource.res and b/src-installer/resource.res differ
diff --git a/src-rdpcheck/MainUnit.pas b/src-rdpcheck/MainUnit.pas
index 1f0e201..3efe4ca 100644
--- a/src-rdpcheck/MainUnit.pas
+++ b/src-rdpcheck/MainUnit.pas
@@ -1,5 +1,5 @@
 {
-  Copyright 2014 Stas'M Corp.
+  Copyright 2015 Stas'M Corp.
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -50,7 +50,7 @@ begin
   RDP.ConnectingText := 'Connecting...';
   RDP.ConnectedStatusText := 'Connected.';
   RDP.UserName := '';
-  RDP.Server := '127.0.0.1';
+  RDP.Server := '127.0.0.2';
   Reg := TRegistry.Create;
   Reg.RootKey := HKEY_LOCAL_MACHINE;
 
@@ -133,7 +133,7 @@ begin
     $2207: ErrStr := 'The smart card is blocked.';
     $1C07: ErrStr := 'An incorrect PIN was presented to the smart card.';
     $B09: ErrStr := 'Network Level Authentication is required.';
-    $708: ErrStr := 'The RDP seems to work, but your client doesn''t support loopback connections. Try to connect to your PC from another device in the network.';
+    $708: ErrStr := 'RDP is working, but the client doesn''t allow loopback connections. Try to connect to your PC from another device in the network.';
     else ErrStr := 'Unknown code 0x'+IntToHex(discReason, 1);
   end;
   if (discReason > 2) then
diff --git a/src-rdpconfig/MainUnit.dfm b/src-rdpconfig/MainUnit.dfm
index 49a9004..d67ee28 100644
--- a/src-rdpconfig/MainUnit.dfm
+++ b/src-rdpconfig/MainUnit.dfm
@@ -3,7 +3,7 @@ object MainForm: TMainForm
   Top = 0
   BorderStyle = bsDialog
   Caption = 'RDP Wrapper Configuration'
-  ClientHeight = 326
+  ClientHeight = 352
   ClientWidth = 351
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
@@ -27,7 +27,7 @@ object MainForm: TMainForm
   end
   object bOK: TButton
     Left = 10
-    Top = 293
+    Top = 319
     Width = 75
     Height = 25
     Caption = 'OK'
@@ -37,7 +37,7 @@ object MainForm: TMainForm
   end
   object bCancel: TButton
     Left = 91
-    Top = 293
+    Top = 319
     Width = 75
     Height = 25
     Caption = 'Cancel'
@@ -47,7 +47,7 @@ object MainForm: TMainForm
   end
   object bApply: TButton
     Left = 172
-    Top = 293
+    Top = 319
     Width = 75
     Height = 25
     Caption = 'Apply'
@@ -66,7 +66,7 @@ object MainForm: TMainForm
   end
   object rgNLA: TRadioGroup
     Left = 8
-    Top = 135
+    Top = 132
     Width = 335
     Height = 73
     Caption = 'Security Mode'
@@ -88,14 +88,16 @@ object MainForm: TMainForm
   end
   object rgShadow: TRadioGroup
     Left = 8
-    Top = 214
+    Top = 208
     Width = 335
-    Height = 73
+    Height = 105
     Caption = 'Session Shadowing Mode'
     Items.Strings = (
       'Disable Shadowing'
-      'Shadowing will request user'#39's permission'
-      'Shadow sessions immediately')
+      'Full access with user'#39's permission'
+      'Full access without permission'
+      'View only with user'#39's permission'
+      'View only without permission')
     TabOrder = 6
     OnClick = cbAllowTSConnectionsClick
   end
@@ -112,7 +114,7 @@ object MainForm: TMainForm
   end
   object bLicense: TButton
     Left = 253
-    Top = 293
+    Top = 319
     Width = 87
     Height = 25
     Caption = 'View license...'
diff --git a/src-rdpconfig/MainUnit.pas b/src-rdpconfig/MainUnit.pas
index 8feeccf..d8608cb 100644
--- a/src-rdpconfig/MainUnit.pas
+++ b/src-rdpconfig/MainUnit.pas
@@ -1,5 +1,5 @@
 {
-  Copyright 2014 Stas'M Corp.
+  Copyright 2015 Stas'M Corp.
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -439,6 +439,15 @@ begin
     end;
   end;
   Reg.CloseKey;
+  Reg.OpenKey('\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services', True);
+  if rgShadow.ItemIndex >= 0 then begin
+    try
+      Reg.WriteInteger('Shadow', rgShadow.ItemIndex);
+    except
+
+    end;
+  end;
+  Reg.CloseKey;
   Reg.Free;
 end;