diff --git a/src/sbbs3/ctrl/MainFormUnit.cpp b/src/sbbs3/ctrl/MainFormUnit.cpp
index a514013f51d161281bd0df342bc40b76a8a7775b..604064b24855c079c526683e40e6a64e0c70e328 100644
--- a/src/sbbs3/ctrl/MainFormUnit.cpp
+++ b/src/sbbs3/ctrl/MainFormUnit.cpp
@@ -53,12 +53,14 @@
 #include "FtpFormUnit.h"
 #include "MailFormUnit.h"
 #include "NodeFormUnit.h"
+
 #include "StatsFormUnit.h"
 #include "ClientFormUnit.h"
 #include "CtrlPathDialogUnit.h"
 #include "TelnetCfgDlgUnit.h"
 #include "MailCfgDlgUnit.h"
 #include "FtpCfgDlgUnit.h"
+#include "ServicesCfgDlgUnit.h"
 #include "AboutBoxFormUnit.h"
 #include "CodeInputFormUnit.h"
 #include "TextFileEditUnit.h"
@@ -1472,6 +1474,23 @@ void __fastcall TMainForm::StartupTimerTick(TObject *Sender)
     if(Registry->ValueExists("FtpOptions"))
     	ftp_startup.options=Registry->ReadInteger("FtpOptions");
 
+    if(Registry->ValueExists("ServicesInterface"))
+    	services_startup.interface_addr
+            =Registry->ReadInteger("ServicesInterface");
+
+    if(Registry->ValueExists("ServicesAnswerSound"))
+    	sprintf(services_startup.answer_sound,"%.*s"
+        	,sizeof(services_startup.answer_sound)-1
+        	,Registry->ReadString("ServicesAnswerSound").c_str());
+
+    if(Registry->ValueExists("ServicesHangupSound"))
+    	sprintf(services_startup.hangup_sound,"%.*s"
+        	,sizeof(services_startup.hangup_sound)-1
+        	,Registry->ReadString("ServicesHangupSound").c_str());
+
+    if(Registry->ValueExists("ServicesOptions"))
+    	services_startup.options=Registry->ReadInteger("ServicesOptions");
+
     Registry->CloseKey();
     delete Registry;
 
@@ -1765,6 +1784,15 @@ void __fastcall TMainForm::SaveSettings(TObject* Sender)
 
     Registry->WriteInteger("FtpOptions",ftp_startup.options);
 
+    Registry->WriteInteger("ServicesInterface",services_startup.interface_addr);
+
+    Registry->WriteString("ServicesAnswerSound"
+        ,AnsiString(services_startup.answer_sound));
+    Registry->WriteString("ServicesHangupSound"
+        ,AnsiString(services_startup.hangup_sound));
+
+    Registry->WriteInteger("ServicesOptions",services_startup.options);
+
 	Registry->WriteInteger( "SpyTerminalWidth"
                             ,SpyTerminalWidth);
 	Registry->WriteInteger( "SpyTerminalHeight"
@@ -2205,3 +2233,11 @@ void __fastcall TMainForm::ReloadConfigExecute(TObject *Sender)
 //---------------------------------------------------------------------------
 
 
+void __fastcall TMainForm::ServicesConfigureExecute(TObject *Sender)
+{
+	Application->CreateForm(__classid(TServicesCfgDlg), &ServicesCfgDlg);
+	ServicesCfgDlg->ShowModal();
+    delete ServicesCfgDlg;
+}
+//---------------------------------------------------------------------------
+
diff --git a/src/sbbs3/ctrl/MainFormUnit.dfm b/src/sbbs3/ctrl/MainFormUnit.dfm
index e82bef811af70feac6f405af667aeb977baea585..279474250dbb66d7e21ab32d04ad3efc9770b622 100644
--- a/src/sbbs3/ctrl/MainFormUnit.dfm
+++ b/src/sbbs3/ctrl/MainFormUnit.dfm
@@ -1,6 +1,6 @@
 object MainForm: TMainForm
-  Left = 573
-  Top = 540
+  Left = 534
+  Top = 529
   Width = 640
   Height = 400
   Caption = 'Synchronet Control Panel'
@@ -2478,6 +2478,18 @@ object MainForm: TMainForm
         end
       end
     end
+    object ServicesMenuItem: TMenuItem
+      Caption = 'Services'
+      object ServicesConfigureMenuItem: TMenuItem
+        Action = ServicesConfigure
+      end
+      object ServicesStartMenuItem: TMenuItem
+        Action = ServicesStart
+      end
+      object ServicesStopMenuItem: TMenuItem
+        Action = ServicesStop
+      end
+    end
     object ViewMenuItem: TMenuItem
       Caption = '&View'
       object ViewNodesMenuItem: TMenuItem
@@ -2678,18 +2690,24 @@ object MainForm: TMainForm
       OnExecute = ReloadConfigExecute
     end
     object ServicesStart: TAction
-      Caption = 'ServicesStart'
+      Caption = 'Start'
       Hint = 'Start Services'
       ImageIndex = 0
       OnExecute = ServicesStartExecute
     end
     object ServicesStop: TAction
-      Caption = 'ServicesStop'
+      Caption = 'Stop'
       Enabled = False
       Hint = 'Stop Services'
       ImageIndex = 2
       OnExecute = ServicesStopExecute
     end
+    object ServicesConfigure: TAction
+      Caption = 'Configure'
+      Hint = 'Configure Services'
+      ImageIndex = 4
+      OnExecute = ServicesConfigureExecute
+    end
   end
   object ImageList: TImageList
     Left = 360
diff --git a/src/sbbs3/ctrl/MainFormUnit.h b/src/sbbs3/ctrl/MainFormUnit.h
index 663c971e0fab5263908bf13aed450113e7a84173..ac3a0697e9b345a47a95b34b317bedb0687005ca 100644
--- a/src/sbbs3/ctrl/MainFormUnit.h
+++ b/src/sbbs3/ctrl/MainFormUnit.h
@@ -237,6 +237,11 @@ __published:	// IDE-managed Components
     TMenuItem *BBSEditSubjectFilterMenuItem;
     TAction *ServicesStart;
     TAction *ServicesStop;
+    TMenuItem *ServicesMenuItem;
+    TMenuItem *ServicesConfigureMenuItem;
+    TMenuItem *ServicesStartMenuItem;
+    TMenuItem *ServicesStopMenuItem;
+    TAction *ServicesConfigure;
     void __fastcall FileExitMenuItemClick(TObject *Sender);
 	void __fastcall ViewToolbarMenuItemClick(TObject *Sender);
 	void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
@@ -299,6 +304,7 @@ __published:	// IDE-managed Components
     void __fastcall ReloadConfigExecute(TObject *Sender);
     void __fastcall ServicesStartExecute(TObject *Sender);
     void __fastcall ServicesStopExecute(TObject *Sender);
+    void __fastcall ServicesConfigureExecute(TObject *Sender);
 private:	// User declarations
 public:		// User declarations
     __fastcall TMainForm(TComponent* Owner);
diff --git a/src/sbbs3/ctrl/ServicesFormUnit.dfm b/src/sbbs3/ctrl/ServicesFormUnit.dfm
index eb9e25ae5d068cb523e8a7c5791e5908d981964a..09d2531ab75950108e458e18621e07e5d6c358c6 100644
--- a/src/sbbs3/ctrl/ServicesFormUnit.dfm
+++ b/src/sbbs3/ctrl/ServicesFormUnit.dfm
@@ -1,6 +1,6 @@
 object ServicesForm: TServicesForm
-  Left = 458
-  Top = 334
+  Left = 381
+  Top = 320
   Width = 870
   Height = 640
   Caption = 'Services'
@@ -63,8 +63,7 @@ object ServicesForm: TServicesForm
     object ConfigureButton: TToolButton
       Left = 54
       Top = 0
-      Hint = 'Configure Services'
-      ImageIndex = 4
+      Action = MainForm.ServicesConfigure
       ParentShowHint = False
       ShowHint = True
     end