/// <summary>
        /// Facade Singleton Factory method.  This method is thread safe.
        /// </summary>
        public static IController GetInstance(string key)
        {
            IController result;
            if (m_instanceMap.TryGetValue(key, out result))
                return result;

            result = new Controller(key);
            m_instanceMap[key] = result;
            return result;
        }