diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000..85b0047ccc
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+
+.buildpath
+.project
+.project
+.settings/org.eclipse.ldt.prefs
diff --git a/.project b/.project
index 05df89ee44..01c398abf7 100644
--- a/.project
+++ b/.project
@@ -5,7 +5,13 @@
+
+ org.eclipse.dltk.core.scriptbuilder
+
+
+
+ org.eclipse.ldt.nature
diff --git a/Sound/MSRS/MSRS - 010 - Config Windows/MSRS - 010 - Config Windows.lua b/Sound/MSRS/MSRS - 010 - Config Windows/MSRS - 010 - Config Windows.lua
new file mode 100644
index 0000000000..509627b38f
--- /dev/null
+++ b/Sound/MSRS/MSRS - 010 - Config Windows/MSRS - 010 - Config Windows.lua
@@ -0,0 +1,26 @@
+----
+-- MSRS: Config Windows
+--
+-- This is a simple demo mission that shows how to use the MSRS class to provide text-to-speech via SRS.
+-- Therefore, you need to have the SRS cliend and server installed and running on your system.
+--
+-- The parameters are taken from a config file "Moose_MSRS.lua", which is included in the demo directory.
+-- You need to copy this file to your "Saved Games/DCS/Config/" directory and adjust the necessary parameters.
+-- In particular, you need to set the path where SRS is installed on your system.
+-- Also the voice used will be "Microsoft Hazel Desktop". You need to either install that on your windows
+-- system or change it to a voice you have installed.
+-- The config file is automatically loaded when Moose is loaded. So you do not need to worry about it.
+--
+-- First, we create a MSRS instance, which will transmit on 305 MHz AM.
+-- The text is then broadcasted after 5 seconds.
+--
+-- You can either use the SRS awacs overlay or just into the F/A-18 Hornet client to listen in on the transmission.
+---
+
+
+-- Create a new MSRS instance. Frequency is 305 MHz AM(=0).
+-- The first parameter (nil) is the SRS installation path. This is taken from the Moose_MSRS.lua config file.
+local msrs=MSRS:New(nil, 305.00, 0)
+
+-- Broadcast text after 5 seconds.
+msrs:PlayText("Hello World, this is the Moose simple radio text-to-speech class speaking.", 5)
diff --git a/Sound/MSRS/MSRS - 010 - Config Windows/MSRS - 010 - Config Windows.miz b/Sound/MSRS/MSRS - 010 - Config Windows/MSRS - 010 - Config Windows.miz
new file mode 100644
index 0000000000..cc1119297c
Binary files /dev/null and b/Sound/MSRS/MSRS - 010 - Config Windows/MSRS - 010 - Config Windows.miz differ
diff --git a/Sound/MSRS/MSRS - 010 - Config Windows/Moose_MSRS.lua b/Sound/MSRS/MSRS - 010 - Config Windows/Moose_MSRS.lua
new file mode 100644
index 0000000000..0947b80c23
--- /dev/null
+++ b/Sound/MSRS/MSRS - 010 - Config Windows/Moose_MSRS.lua
@@ -0,0 +1,40 @@
+ -- Moose MSRS default Config
+ MSRS_Config = {
+ Path = "C:\\Program Files\\DCS-SimpleRadio-Standalone", -- Path to SRS install directory. Mind the double backslashes.
+ Port = 5002, -- Port of SRS server. Default 5002.
+ Backend = "srsexe", -- Interface to SRS: "srsexe" or "grpc".
+ Frequency = {127, 243}, -- Default frequences. Must be a table 1..n entries!
+ Modulation = {0,0}, -- Default modulations. Must be a table, 1..n entries, one for each frequency!
+ Volume = 1.0, -- Default volume [0,1].
+ Coalition = 0, -- 0 = Neutral, 1 = Red, 2 = Blue (only a factor if SRS server has encryption enabled).
+ Coordinate = {0,0,0}, -- x, y, alt (only a factor if SRS server has line-of-sight and/or distance limit enabled).
+ Culture = "en-GB",
+ Gender = "male",
+ Voice = "Microsoft Hazel Desktop", -- Voice that is used if no explicit provider voice is specified.
+ Label = "MSRS",
+ Provider = "win", --Provider for generating TTS (win, gcloud, azure, asw).
+
+ -- Windows
+ win = {
+ voice = "Microsoft Hazel Desktop", -- Native Windows TTS engine. That voice needs to be installed on your system.
+ },
+ -- Google Cloud
+ gcloud = {
+ voice = "en-GB-Standard-A", -- The Google Cloud voice to use (see https://cloud.google.com/text-to-speech/docs/voices).
+ credentials="C:\\Program Files\\DCS-SimpleRadio-Standalone\\yourfilename.json", -- Full path to credentials JSON file (only for SRS-TTS.exe backend)
+ key="Your access Key", -- Google API access key (only for DCS-gRPC backend)
+ },
+ -- Amazon Web Service
+ aws = {
+ voice = "Brian", -- The default AWS voice to use (see https://docs.aws.amazon.com/polly/latest/dg/voicelist.html).
+ key="Your Access Key", -- Your AWS key.
+ secret="Your secret key", -- Your AWS secret key.
+ region="eu-central-1", -- Your AWS region (see https://docs.aws.amazon.com/general/latest/gr/pol.html).
+ },
+ -- Microsoft Azure
+ azure = {
+ voice="en-US-AriaNeural", --The default Azure voice to use (see https://learn.microsoft.com/azure/cognitive-services/speech-service/language-support).
+ key="Your access key", -- Your Azure access key.
+ region="westeurope", -- The Azure region to use (see https://learn.microsoft.com/en-us/azure/cognitive-services/speech-service/regions).
+ },
+ }
\ No newline at end of file
diff --git a/TAD - Task Dispatching/A2G - Air 2 Ground Task Dispatching/TAD-A2G-100 - TYPES - Detection Test/TAD-A2G-100 - TYPES - Detection test.lua b/TAD - Task Dispatching/A2G - Air 2 Ground Task Dispatching/TAD-A2G-100 - TYPES - Detection Test/TAD-A2G-100 - TYPES - Detection test.lua
deleted file mode 100644
index f3c3bb7f5d..0000000000
--- a/TAD - Task Dispatching/A2G - Air 2 Ground Task Dispatching/TAD-A2G-100 - TYPES - Detection Test/TAD-A2G-100 - TYPES - Detection test.lua
+++ /dev/null
@@ -1,51 +0,0 @@
- ---
--- Name: TAD-A2G-100 - TYPES - Detection Test
--- Author: FlightControl
--- Date Created: 15 Mar 2018
---
--- # Situation:
---
--- This mission demonstrates the dynamic task dispatching for Air to Ground operations.
--- Reconnassance vehicles are placed at strategic locations, scanning for the enemy locations.
--- The detection method used is the DETECTION_TYPES method, which groups detected targets into Unit Types that were detected.
--- The AttackSet will engage upon the enemy, which is a Set of Groups seated by Players.
--- A2G Tasks are being dispatched to the Players as enemy locations are being detected by the Recce.
--- Observe that A2G Tasks are being dispatched to the player.
-
-
--- Declare the Command Center
-local HQ = GROUP
- :FindByName( "HQ", "Bravo HQ" )
-
-local CommandCenter = COMMANDCENTER
- :New( HQ, "Lima" ) -- Create the CommandCenter.
-
--- Declare the Mission for the Command Center.
-local Mission = MISSION
- :New( CommandCenter, "Overlord", "High", "Attack Detect Mission Briefing", coalition.side.RED ) -- Create the Mission.
-
--- Define the RecceSet that will detect the enemy.
-local RecceSet = SET_GROUP
- :New() -- Create the RecceSet, which is the set of groups detecting the enemy locations.
- :FilterPrefixes( "Recce" ) -- All Recce groups start with the name "Recce".
- :FilterCoalitions("red") -- only the red coalition.
- :FilterStart() -- Start the dynamic building of the set.
-
--- Setup the detection. We use DETECTION_AREAS to detect and group the enemies.
-local DetectionAreas = DETECTION_TYPES
- :New( RecceSet ) -- The RecceSet will detect the enemies, and group them into unit types that were detected.
-
--- Setup the AttackSet, which is a SET_GROUP.
--- The SET_GROUP is a dynamic collection of GROUP objects.
-local AttackSet = SET_GROUP
- :New() -- Create the SET_GROUP object.
- :FilterCoalitions( "red" ) -- Only incorporate the RED coalitions.
- :FilterPrefixes( "Attack" ) -- Only incorporate groups that start with the name Attack.
- :FilterStart() -- Start the dynamic building of the set.
-
--- Now we have everything to setup the main A2G TaskDispatcher.
-TaskDispatcher = TASK_A2G_DISPATCHER
- :New( Mission, AttackSet, DetectionAreas ) -- We assign the TaskDispatcher under Mission. The AttackSet will engage the enemy and will recieve the dispatched Tasks. The DetectionAreas will report any detected enemies to the TaskDispatcher.
-
--- We use the MISSILETRAINER for demonstration purposes.
-MissileTrainer = MISSILETRAINER:New( 100, "Missiles will be destroyed for training when they reach your plane." )