def __new__(mcs, name, bases, attrs):

        binding = ConcretePyGlassModelsMeta._engines.get(name)
        if binding is None:

            # Retrieve the database URL from the __init__.py for the package in which the model class
            # resides.
            try:
                module  = attrs['__module__']
                package = module[:module.rfind('.')]
                res = __import__(package, globals(), locals(), [StringUtils.toStr2('DATABASE_URL')])
            except Exception as err:
                PyGlassModelUtils.logger.writeError([
                    'ERROR: Unable to initialize model',
                    'NAME: %s' % name ])
                raise

            try:
                sourceUrl = getattr(res, 'DATABASE_URL')
            except Exception as err:
                PyGlassModelUtils.logger.writeError([
                    'ERROR: Unable to get DATABASE_URL from %s.__init__.py' % package,
                    'NAME: %s' % name ], err)
                raise

            try:
                url = PyGlassModelUtils.getEngineUrl(sourceUrl)
            except Exception as err:
                PyGlassModelUtils.logger.writeError([
                    'ERROR: Unable to get url from database url',
                    'DATABASE URL: ' + StringUtils.toUnicode(sourceUrl) ], err)
                raise

            try:
                engine = create_engine(url, echo=False)
            except Exception as err:
                PyGlassModelUtils.logger.writeError([
                    'DATABASE FAILURE: Unable to create engine for database',
                    'URL: ' + StringUtils.toUnicode(url),
                    'NAME: ' + StringUtils.toUnicode(name)
                ], err)
                raise

            try:
                Session = scoped_session(sessionmaker(bind=engine))
            except Exception as err:
                PyGlassModelUtils.logger.writeError([
                    'DATABASE FAILURE: Unable to create bound Session.',
                    'URL: ' + StringUtils.toUnicode(url),
                    'ENGINE: ' + StringUtils.toUnicode(engine)
                ], err)
                raise

            try:
                Base = declarative_base(bind=engine)
            except Exception as err:
                PyGlassModelUtils.logger.writeError([
                    'DATABASE FAILURE: Unable to create database engine Base.',
                    'URL: ' + StringUtils.toUnicode(url),
                    'ENGINE: ' + StringUtils.toUnicode(engine)
                ], err)
                raise

            try:
                Base.metadata.create_all(engine)
            except Exception as err:
                PyGlassModelUtils.logger.writeError([
                    'DATABASE FAILURE: Unable to create models.'
                    'URL: ' + StringUtils.toUnicode(url),
                    'ENGINE: ' + StringUtils.toUnicode(engine),
                    'BASE: ' + StringUtils.toUnicode(Base)
                ], err)
                raise

            binding = {
                'engine':engine,
                'SessionClass':Session,
                'BaseClass':Base,
                'url':url,
                'databaseUrl':sourceUrl }
            mcs._engines[name] = binding

        attrs['ENGINE']        = binding['engine']
        attrs['SESSION_CLASS'] = binding['SessionClass']
        attrs['BASE']          = binding['BaseClass']
        attrs['URL']           = binding['url']
        attrs['MODEL_NAME']    = name

        attrs['DATABASE_URL']  = binding['databaseUrl']
        attrs['BINDING']       = binding

        # Add the declarative base to inheritance
        declaredBase = (binding['BaseClass'],)
        try:
            bases = bases + declaredBase
        except Exception as err:
            bases = declaredBase

        out = AbstractPyGlassModelsMeta.__new__(mcs, name, bases, attrs)
        return out
        attrs['SESSION_CLASS'] = binding['SessionClass']
        attrs['BASE']          = binding['BaseClass']
        attrs['URL']           = binding['url']
        attrs['MODEL_NAME']    = name

        attrs['DATABASE_URL'] = binding['databaseUrl']
        attrs['BINDING']      = binding

        # Add the declarative base to inheritance
        declaredBase = (binding['BaseClass'],)
        try:
            bases = bases + declaredBase
        except Exception, err:
            bases = declaredBase

        out = AbstractPyGlassModelsMeta.__new__(mcs, name, bases, attrs)
        return out

#===================================================================================================
#                                                                                     P U B L I C

#___________________________________________________________________________________________________ createSession
    def createSession(cls):
        return cls.SESSION_CLASS()

#___________________________________________________________________________________________________ query
    def query(cls, session, modelFilter =None, modelOrderBy =None, limit =None, offset =None,
              joinModels =None):
        query = cls.createQuery(session)
        if joinModels is not None:
            for model in joinModels: