// constructors
        /// <summary>
        /// Initializes a new instance of the <see cref="TasslehoffCore" /> class.
        /// </summary>
        /// <param name="configuration">The core configuration</param>
        public TasslehoffCore(TasslehoffCoreConfig configuration = null)
            : base()
        {
            // initialization
            this.configuration = configuration;

            this.databaseManager = new DatabaseManager();

            this.taskManager = new TaskManager();
            this.AddChild(this.taskManager);

            this.extensionFinder = new ExtensionFinder();
            this.AddChild(this.extensionFinder);

            this.pluginContainer = new PluginContainer(this.extensionFinder);
            this.AddChild(this.pluginContainer);

            this.OnStartWithChildren += this.Tasslehoff_OnStartWithChildren;
        }
        /// <summary>
        /// Merges a DatabaseManager with another one
        /// </summary>
        /// <param name="other">The other DatabaseManager instance</param>
        public void Merge(DatabaseManager other)
        {
            if (other != null)
            {
                foreach (KeyValuePair<string, DatabaseManagerConnection> pair in other.Connections)
                {
                    this.Connections[pair.Key] = pair.Value;
                }

                foreach (KeyValuePair<string, Database> pair in other.DatabaseInstances)
                {
                    this.DatabaseInstances[pair.Key] = pair.Value;
                }

                foreach (KeyValuePair<string, DatabaseManagerQuery> pair in other.Queries)
                {
                    this.Queries[pair.Key] = pair.Value;
                }

                foreach (KeyValuePair<string, string> pair in other.QueryPlaceholders)
                {
                    this.QueryPlaceholders[pair.Key] = pair.Value;
                }
            }
        }