    Update tmp_DesignElementMap 
    set GeneID = (Select GeneID from a2_Gene where Identifier = tmp_DesignElementMap.GeneIdentifier) 
    where GeneID is null;
+ dbms_output.put_line(' create missed genes: ' || TO_CHAR(sysdate, 'HH24:MI:SS'));
  
  /*
- for r in (select * from tmp_DesignElementMap where GeneID is null) loop
-   select a2_Gene_Seq.nextval into TheGeneID from dual; 
-    
-   Insert into a2_Gene(GeneID, Name, Identifier)
-   select TheGeneID,'GENE:' || r.GeneIdentifier, r.GeneIdentifier from dual;
-      
-   update tmp_DesignElementMap set GeneID = TheGeneID 
-   where DesignElementAccession = r.DesignElementAccession;
+ for r in (select * from tmp_DesignElementMap) loop
+   dbms_output.put_line('GENE:' || r.GeneID || ' ' || r.GeneIdentifier);
  end loop;
- */ 
- dbms_output.put_line(' create missed genes: ' || TO_CHAR(sysdate, 'HH24:MI:SS'));
+ */
  
  --add properties (do not remove old properties from Gene) 
- MERGE INTO a2_GeneGPV gpv
+ MERGE /*+ parallel(a2_GeneGPV,12) append */ INTO a2_GeneGPV gpv
  USING (select distinct m.GeneID, pv.genepropertyvalueid 
         from table(CAST(LowerCaseDesignElements as DesignElementTable)) t
         join tmp_DesignElementMap m on m.designelementaccession = t.Accession

 dbms_output.put_line(' update propertyvalues: ' || TO_CHAR(sysdate, 'HH24:MI:SS'));
 
 --map DesignElementAccessions to existing genes
 Insert into tmp_DesignElementMap(DesignElementAccession,GeneID,GeneIdentifier)
 select t.Accession, min(GeneID), null
 from table(CAST(LowerCaseDesignElements as DesignElementTable)) t
 join vwGeneIDs IDs on ids.name = t.EntryName and ids.value = t.EntryValue

 dbms_output.put_line(' create ArrayDesignID: ' || TO_CHAR(sysdate, 'HH24:MI:SS'));

 --update properties 
 MERGE /*+ parallel(a2_GeneProperty,10) append */ into a2_GeneProperty p 
 USING (select distinct EntryName from table(CAST(LowerCaseDesignElements as DesignElementTable))) t
 ON (t.EntryName = p.Name)
 WHEN MATCHED THEN 
