private void _clockManager_Expired(string providerName)
        {
            //set console color to green
            //Console.ForegroundColor = ConsoleColor.Yellow;

            //Console.WriteLine($"Module: {providerName}, Expired!");

            //get expired item
            Tuple <object, object[]> oldObject;

            _modules.TryGetValue(providerName, out oldObject);


            if (oldObject != null)
            {
                //remove items from clock and modules locator
                _modules.Remove(providerName);
                _clockManager.Remove(providerName);
                //create new instance
                var constructor = oldObject.Item1.GetType().GetTypeInfo().DeclaredConstructors.ToArray()[0];
                var parameters  = constructor.GetParameters();

                //initialize constructor
                object newObject = null;

                if (parameters.Length == 1)
                {
                    newObject = constructor.Invoke(new object[] { oldObject.Item2[0] });
                }
                else if (parameters.Length > 1)
                {
                    newObject = constructor.Invoke(new object[] { oldObject.Item2 });
                }
                else
                {
                    newObject = constructor.Invoke(null);
                }

                //re-add
                _modules.Add(providerName, new Tuple <object, object[]>(newObject, oldObject.Item2));
                _clockManager.Add(providerName);
            }
        }