 
 (defn process [units target-language]
   (log/debug "Starting processing with: " (.size units) " instruction(s) for language " target-language)
-  (let [import_table (str "expression_import_" target-language)
-        expression_distinct_table (str "expression_distinct_" target-language)]
-
+
+  ;; cleanup: TODO: use temporary tables
+  (let [import_table (str "expression_import_" target-language "_" (rand-int 1000000))
+        expression_distinct_table (str "expression_distinct_" target-language "_" (rand-int 1000000))]
+
+    ;; cleanup: TODO: use temporary tables
     (exec-raw (str "DROP TABLE IF EXISTS " import_table))
 
     (exec-raw (str "CREATE TABLE " import_table " (

                         count
                         (if (> current-target-count 0) " more")
                         " expressions for spec: " spec))
          (populate count
                    source-model
                    target-model
                    spec table))
        (log/debug (str "Since no more are required, not generating any for this spec."))))))

(defn fill-verb [verb count source-model target-model & [spec table]] ;; spec is for additional constraints on generation.

    (exec-raw (str "INSERT INTO expression (language,model,surface,structure,serialized)
                    SELECT language,model,surface,structure,serialized
                      FROM " expression_distinct_table ""))

    ;; cleanup: TODO: use temporary tables
    (exec-raw (str "DROP TABLE " expression_distinct_table))
    (exec-raw (str "DROP TABLE " import_table))
    
    ))

;; (process accompany care fornire indossare moltiplicare recuperare riconoscere riscaldare)
