public function getNewMigrations( )
    {
        // check if migration table exists
        $exists = $this->db->tableExists( $this->migrationTable );
        
        if ( !$exists )
        {
            $this->createMigrationTable( );
        }
        
        $query = "SELECT * FROM $this->migrationTable";
        
        $applied = $this->db->query( $query );
        
        $migrations = $this->getMigrations();
        
        $list = array();
        
        foreach( $migrations as $migration )
        {
            $done = FALSE;
            $migToFind = NULL;
            
            foreach( $this->namespaces as $ns )
            {
                $cls = $ns . $migration;
                
                if ( class_exists( $cls ) )
                {
                    $migToFind = $cls;
                    
                    break;
                }
            }
            
            foreach( $applied as $mig )
            {
                if ( $mig[ 'migration_name' ] === $migToFind )
                {
                    $done = TRUE;
                    break;
                }
            }
            
            if ( !$done )
            {
                $list[] = $migration;
            }
        }
        
        return $this->filter( self::ON_GET_NEW_MIGRATIONS_FILTER, $list );
    }