diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/CMakeLists.txt b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..df8cabf10abdfc9fe8510d7e01b8684dea156c57
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/CMakeLists.txt
@@ -0,0 +1,23 @@
+################################################################################
+# Package: TrigExMTHelloWorld
+################################################################################
+
+# Declare the package name:
+atlas_subdir( TrigExMTHelloWorld )
+
+# Declare the package's dependencies:
+atlas_depends_on_subdirs( PUBLIC
+                          Control/AthenaBaseComps
+                          PRIVATE
+                          GaudiKernel )
+
+# Component(s) in the package:
+atlas_add_component( TrigExMTHelloWorld
+                     src/*.cxx
+                     src/components/*.cxx
+                     LINK_LIBRARIES AthenaBaseComps GaudiKernel )
+
+# Install files from the package:
+atlas_install_headers( TrigExMTHelloWorld )
+atlas_install_joboptions( share/*.py )
+
diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/TrigExMTHelloWorld/MTHelloWorld.h b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/TrigExMTHelloWorld/MTHelloWorld.h
new file mode 100755
index 0000000000000000000000000000000000000000..7122ab7b4f05084e4e692a54bf85f4e9b5d9c6e3
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/TrigExMTHelloWorld/MTHelloWorld.h
@@ -0,0 +1,25 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "AthenaBaseComps/AthAlgorithm.h"
+
+/////////////////////////////////////////////////////////////////////////////
+
+class MTHelloWorld : public AthAlgorithm {
+public:
+  MTHelloWorld (const std::string& name, ISvcLocator* pSvcLocator);
+  virtual StatusCode initialize();
+  virtual StatusCode execute();
+  virtual StatusCode finalize();
+  virtual StatusCode beginRun();
+  virtual StatusCode endRun();
+  virtual StatusCode start();
+  virtual StatusCode stop();
+  
+private:
+  IntegerProperty      m_myInt;
+  BooleanProperty      m_myBool;
+  DoubleProperty       m_myDouble;
+  StringArrayProperty  m_myStringVec;
+};
diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/cmt/requirements b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/cmt/requirements
new file mode 100755
index 0000000000000000000000000000000000000000..19b2f8dc03635327e857276e58f5098e833036b5
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/cmt/requirements
@@ -0,0 +1,16 @@
+package TrigExMTHelloWorld
+
+author Werner Wiedenmann <Werner.Wiedenmann@cern.ch>
+author Frank Winklmeier <frank.winklmeier@cern.ch>
+
+public
+use  AtlasPolicy                AtlasPolicy-*                   
+use  AthenaBaseComps            AthenaBaseComps-*               Control
+
+library TrigExMTHelloWorld *.cxx -s=components *.cxx
+apply_pattern component_library
+
+apply_pattern declare_joboptions files="*.py"
+
+private
+use  GaudiInterface             GaudiInterface-*                External
diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/share/MTHelloWorldOptions.py b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/share/MTHelloWorldOptions.py
new file mode 100755
index 0000000000000000000000000000000000000000..efd9114addf48e4b89b9c179e0b2f00035e58614
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/share/MTHelloWorldOptions.py
@@ -0,0 +1,40 @@
+#**************************************************************
+#
+# MTHelloWorld example
+#
+#==============================================================
+from AthenaCommon.AppMgr import ServiceMgr as svcMgr
+from AthenaCommon.Constants import *
+
+#--------------------------------------------------------------
+# Private Application Configuration options
+#--------------------------------------------------------------
+from TrigExMTHelloWorld.TrigExMTHelloWorldConf import MTHelloWorld
+HelloWorld = MTHelloWorld("HelloWorld")
+
+from AthenaCommon.AlgSequence import AlgSequence
+topSequence = AlgSequence()
+topSequence += HelloWorld
+
+#--------------------------------------------------------------
+# Algorithms Private Options
+#--------------------------------------------------------------
+
+# For the genuine HelloWorld algorithm
+HelloWorld.MyInt = 42
+HelloWorld.MyBool = TRUE
+HelloWorld.MyDouble = 3.14159
+HelloWorld.MyStringVec = [ "Welcome", "to", "Athena", "Framework", "Tutorial" ]
+
+# For a special HelloWorld algorithm
+#HelloWorld__1 = Algorithm( "HelloWorld__1" )
+#HelloWorld__1.MyInt = 21
+#HelloWorld__1.MyBool = FALSE
+#HelloWorld__1.MyDouble = 6.28
+#HelloWorld__1.MyStringVec = [ "Welcome", "to", "Thread", "1" ]
+
+#==============================================================
+#
+# End of MTHelloWorld example
+#
+#**************************************************************
diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/src/MTHelloWorld.cxx b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/src/MTHelloWorld.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..a6fa4dde1b7b10a8dcdc84175f992202d3a01fce
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/src/MTHelloWorld.cxx
@@ -0,0 +1,100 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "TrigExMTHelloWorld/MTHelloWorld.h"
+
+MTHelloWorld::MTHelloWorld(const std::string& name, ISvcLocator* pSvcLocator) :
+   AthAlgorithm(name, pSvcLocator),
+   m_myInt(0), m_myBool(0), m_myDouble(0)
+{
+  
+  // Part 2: Declare the properties
+  declareProperty("MyInt", m_myInt);
+  declareProperty("MyBool", m_myBool);
+  declareProperty("MyDouble", m_myDouble);
+
+  declareProperty("MyStringVec",m_myStringVec);
+
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
+
+StatusCode MTHelloWorld::initialize()
+{
+   ATH_MSG_INFO("initialize()");
+
+
+#ifdef ATLAS_GAUDI_V21
+  SmartIF<IService> tmp_msgSvc(msgSvc()); 
+  if(tmp_msgSvc.isValid()) {
+     ATH_MSG_INFO(" Algorithm = " << name() << " is connected to Message Service = " << tmp_msgSvc->name());
+  }
+#else
+  Service* tmp_msgSvc = dynamic_cast<Service*> (msgSvc()); 
+  if(tmp_msgSvc != 0) {
+    ATH_MSG_INFO(" Algorithm = " << name() << " is connected to Message Service = "
+                 << tmp_msgSvc->name());
+  }
+#endif
+
+  // Part 2: Print out the property values
+  ATH_MSG_INFO("  MyInt =    " << m_myInt);
+  ATH_MSG_INFO("  MyBool =   " << m_myBool);
+  ATH_MSG_INFO("  MyDouble = " << m_myDouble);
+  
+  for (unsigned int i=0; i<m_myStringVec.value().size(); i++) {
+     ATH_MSG_INFO("  MyStringVec[" << i << "] = " << (m_myStringVec.value())[i]);
+  }
+
+  return StatusCode::SUCCESS;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
+
+StatusCode MTHelloWorld::execute()
+{
+  
+   ATH_MSG_INFO("execute()");
+
+   // Part 1: Print out the different levels of messages
+   ATH_MSG_DEBUG( "A DEBUG message");
+   ATH_MSG_INFO( "An INFO message");
+   ATH_MSG_WARNING( "A WARNING message");
+   ATH_MSG_ERROR( "An ERROR message");
+   ATH_MSG_FATAL( "A FATAL error message");
+   
+   return StatusCode::SUCCESS;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
+
+StatusCode MTHelloWorld::finalize()
+{
+   ATH_MSG_INFO( "finalize()");
+   return StatusCode::SUCCESS;
+}
+
+StatusCode MTHelloWorld::beginRun()
+{
+   ATH_MSG_INFO( "beginRun()");
+   return StatusCode::SUCCESS;
+}
+
+StatusCode MTHelloWorld::endRun()
+{
+   ATH_MSG_INFO( "endRun()");
+   return StatusCode::SUCCESS;
+}
+
+StatusCode MTHelloWorld::start()
+{
+   ATH_MSG_INFO( "start()");
+   return StatusCode::SUCCESS;
+}
+
+StatusCode MTHelloWorld::stop()
+{
+   ATH_MSG_INFO( "stop()");
+   return StatusCode::SUCCESS;
+}
diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/src/components/MTHelloWorld_entries.cxx b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/src/components/MTHelloWorld_entries.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..5d34ad59de639e41c93c281f3ddd9678d94908bf
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/src/components/MTHelloWorld_entries.cxx
@@ -0,0 +1,8 @@
+#include "TrigExMTHelloWorld/MTHelloWorld.h"
+#include "GaudiKernel/DeclareFactoryEntries.h"
+
+DECLARE_ALGORITHM_FACTORY( MTHelloWorld )
+
+DECLARE_FACTORY_ENTRIES(TrigExMTHelloWorld) {
+    DECLARE_ALGORITHM( MTHelloWorld );
+}
diff --git a/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/src/components/MTHelloWorld_load.cxx b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/src/components/MTHelloWorld_load.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..ac59b3791827570c7a5ef068804ae1945961724a
--- /dev/null
+++ b/HLT/Trigger/TrigControl/TrigExamples/TrigExMTHelloWorld/src/components/MTHelloWorld_load.cxx
@@ -0,0 +1,4 @@
+#include "GaudiKernel/LoadFactoryEntries.h"
+
+LOAD_FACTORY_ENTRIES(TrigExMTHelloWorld)
+