    /**
     * Factory class which returns an instance of the provided layout.
     */
    Ext.define('Ext.layout.Layout', {

        requires: [
            'Ext.layout.Fit',
            'Ext.layout.Card',
            'Ext.layout.HBox',
            'Ext.layout.VBox'
        ],

        /**
         * Creates a new Layout for the specified container using the config object's layout to determine
         * layout to instantiate.
         * @param {Ext.Container} container A configuration object for the Component you wish to create.
         * @param {Object} [config] The alias to provide the Layout type; if none is
         * specified, Ext.layout.Default will be used.
         * @return {Ext.layout.Default} The newly instantiated Layout.
         */
        constructor: function(container, config) {
            var layoutClass = Ext.layout.Default,
                type, layout;

            if (typeof config == 'string') {
                type = config;
                config = {};
            }
            else if ('type' in config) {
                type = config.type;
            }

            if (type) {
                layoutClass = Ext.ClassManager.getByAlias('layout.' + type);

                //<debug error>
                if (!layoutClass) {
                    Ext.Logger.error("Unknown layout type of: '" + type + "'");
                }
                //</debug>
            }

            return new layoutClass(container, config);
        }
    });