diff --git a/src/utility/settings.h b/src/utility/settings.h
index 6983fdabd..abcc139af 100644
--- a/src/utility/settings.h
+++ b/src/utility/settings.h
@@ -9,6 +9,7 @@
 #define SETTINGS_H_
 
 #include <iostream>
+#include <list>
 #include <boost/program_options.hpp>
 #include "src/exceptions/InvalidSettings.h"
 
@@ -118,7 +119,91 @@ namespace settings {
 	 */
 	Settings* instance();
 
-} // namespace parser
+
+	/*!
+	 *	@brief	Function type for functions registering new options.
+	 */
+	typedef void(*fptr_regOption)(bpo::options_description&);
+	
+	/*!
+	 *	@brief	Function type for function checking constraints on settings.
+	 */
+	typedef bool(*fptr_checkOption)(bpo::variables_map&);
+	
+	
+	/*!
+	 *	@brief This class handles callbacks for registering new options and
+	 *	checking constraints on them afterwards.
+	 *
+	 *	This class is also a singleton (like Settings) and is implemented much
+	 *	simpler as we don't need any custom initialization code.
+	 */
+	class Callbacks
+	{
+		private:
+			/*!
+			 *	@brief Stores register callbacks.
+			 */
+			std::list<fptr_regOption> reg_list;
+			/*!
+			 *	@brief Stores check callbacks.
+			 */
+			std::list<fptr_checkOption> check_list;
+			
+			/*!
+			 *	@brief Private constructor.
+			 */
+			Callbacks() {}
+			/*!
+			 *	@brief Private copy constructor.
+			 */
+			Callbacks(const Callbacks&) {}
+			/*!
+			 *	@brief Private destructor.
+			 */
+			~Callbacks() {}			
+		public:
+			/*!
+			 *	@brief Returns current instance to create singleton.
+			 *	@return current instance
+			 */
+			static Callbacks& getInstance()
+			{
+				static Callbacks instance;
+				return instance;
+			}
+		
+		/*!
+		 *	@brief Register class needs access to lists.
+		 */
+		friend class Register;
+	};
+	
+	/*!
+	 *	@brief Wrapper class to allow for registering callbacks during
+	 *	static initialization.
+	 */
+	class Register
+	{
+		public:
+			/*!
+			 *	@brief Registers given function as register callback.
+			 */
+			Register(const fptr_regOption ptr)
+			{
+				mrmc::settings::Callbacks::getInstance().reg_list.push_back(ptr);
+			}
+			
+			/*!
+			 *	@brief Registers given function as check callback.
+			 */
+			Register(const fptr_checkOption ptr)
+			{
+				mrmc::settings::Callbacks::getInstance().check_list.push_back(ptr);
+			}
+	};
+	
+} // namespace settings
 } // namespace mrmc
 
 #endif // SETTINGS_H_