internal static void RegisterPropertiesFromConfigurationObject(this PoorMansIoC container, INimbusConfiguration configuration)
        {
            configuration.RegisterWith(container);

            configuration
                .GetType()
                .GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)
                .Where(p => typeof (ISetting).IsAssignableFrom(p.PropertyType))
                .Select(p => p.GetValue(configuration))
                .Do(o => container.Register(o))
                .Done();

            configuration
                .GetType()
                .GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)
                .Where(p => typeof (INimbusConfiguration).IsAssignableFrom(p.PropertyType))
                .Select(p => (INimbusConfiguration) p.GetValue(configuration))
                .Do(container.RegisterPropertiesFromConfigurationObject)
                .Done();
        }
        internal static void RegisterPropertiesFromConfigurationObject(this PoorMansIoC container, INimbusConfiguration configuration)
        {
            configuration.RegisterWith(container);

            configuration
            .GetType()
            .GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)
            .Where(p => typeof(ISetting).IsAssignableFrom(p.PropertyType))
            .Select(p => p.GetValue(configuration))
            .Do(o => container.Register(o))
            .Done();

            configuration
            .GetType()
            .GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)
            .Where(p => typeof(INimbusConfiguration).IsAssignableFrom(p.PropertyType))
            .Select(p => (INimbusConfiguration)p.GetValue(configuration))
            .Do(container.RegisterPropertiesFromConfigurationObject)
            .Done();
        }