Index: s10k/XmlTools/utilglobalvars.h
===================================================================
--- s10k/XmlTools/utilglobalvars.h	(revision 1111)
+++ s10k/XmlTools/utilglobalvars.h	(revision 1112)
@@ -24,5 +24,5 @@
 
 static const QString AppName = "XmlTools";
-static const QString AppVersion = "2.0e";
+static const QString AppVersion = "2.0f";
 #ifdef Q_OS_WIN
 static const QString AppExecutable=AppName+".exe";
Index: s10k/XmlTools/xmlcustomcode.cpp
===================================================================
--- s10k/XmlTools/xmlcustomcode.cpp	(revision 1111)
+++ s10k/XmlTools/xmlcustomcode.cpp	(revision 1112)
@@ -37,5 +37,5 @@
         e.getXmlDataFunction = new QScriptValue(e.scriptEngine->evaluate("(function getXmlData() { return $xmlData; })"));
         e.setXmlDataFunction = new QScriptValue(e.scriptEngine->evaluate("(function setXmlData(newXmlData) { $xmlData=newXmlData; })"));
-        e.isAvailable = true;
+        e.mutexForEngine = new QMutex;
 
         // Add echo function so user can debug the code
@@ -75,5 +75,5 @@
     if(filesToProcess.size()<=CUSTOM_FILES_PER_THREAD || numThreads == 1){
 
-        jsCustomCodeEngine &jsEngine = getAvailableJsEngine();
+        jsCustomCodeEngine &jsEngine = this->jsScriptEngines.first();
 
         // Process all XmlFiles
@@ -88,13 +88,14 @@
         QVector<QFuture<void>> executingThreads;
 
-        for(int i=0; i<=filesToProcess.size()-CUSTOM_FILES_PER_THREAD; i+=CUSTOM_FILES_PER_THREAD){
+        for(int i=0, iteration = 0; i<=filesToProcess.size()-CUSTOM_FILES_PER_THREAD; i+=CUSTOM_FILES_PER_THREAD, ++iteration){
 
-            executingThreads <<
-            QtConcurrent::run(&this->myThreadPool, [=]()
+            executingThreads << QtConcurrent::run(&this->myThreadPool, [=]()
             {
-                mutexIsAvailable.lock();
-                jsCustomCodeEngine &jsEngine = getAvailableJsEngine();
-                jsEngine.isAvailable = false;
-                mutexIsAvailable.unlock();
+
+                const int indexJsEngine = iteration % this->numThreads;
+
+                jsCustomCodeEngine &jsEngine = this->jsScriptEngines[indexJsEngine];
+
+                jsEngine.mutexForEngine->lock();
 
                 QString currXmlFileStringThread;
@@ -116,7 +117,5 @@
                                     *jsEngine.jsFunction,*jsEngine.getXmlDataFunction,*jsEngine.setXmlDataFunction,backupsEnabled,verboseEnabled);
 
-                mutexIsAvailable.lock();
-                jsEngine.isAvailable = true;
-                mutexIsAvailable.unlock();
+                jsEngine.mutexForEngine->unlock();
             });
         }
@@ -131,5 +130,5 @@
             int alreadyProcessedFiles=(filesToProcess.size()/CUSTOM_FILES_PER_THREAD)*CUSTOM_FILES_PER_THREAD;
 
-            jsCustomCodeEngine &jsEngine = getAvailableJsEngine();
+            jsCustomCodeEngine &jsEngine = this->jsScriptEngines.first();
 
             for(int i=alreadyProcessedFiles; i<filesToProcess.size(); i++){
@@ -147,12 +146,2 @@
     }
 }
-
-XmlCustomCode::jsCustomCodeEngine& XmlCustomCode::getAvailableJsEngine(){
-    for(jsCustomCodeEngine &e : this->jsScriptEngines){
-        if(e.isAvailable){
-            return e;
-        }
-    }
-
-    throw std::runtime_error("Could't find an available js engine for custom command.");
-}
Index: s10k/XmlTools/xmlcustomcode.h
===================================================================
--- s10k/XmlTools/xmlcustomcode.h	(revision 1111)
+++ s10k/XmlTools/xmlcustomcode.h	(revision 1112)
@@ -27,12 +27,12 @@
     const int numThreads;
     QThreadPool myThreadPool;
-    QMutex mutexIsAvailable;
 
     struct jsCustomCodeEngine{
+        /* No need to delete these... They will stay alive until program quits. */
         QScriptEngine* scriptEngine;
         QScriptValue* jsFunction;
         QScriptValue* getXmlDataFunction;
         QScriptValue* setXmlDataFunction;
-        bool isAvailable;
+        QMutex *mutexForEngine;
     };
 
@@ -44,9 +44,8 @@
 
     void displayJsException(QScriptEngine &engine, QScriptValue &engineResult);
-    jsCustomCodeEngine& getAvailableJsEngine();
 
     __attribute__((always_inline)) inline void customCodeUnwinding(const QString &fileName, QString &currXmlFileString,
-    QScriptEngine &engine, clock_t &begin, double elapsed_secs, QScriptValue &engineResult, QScriptValue &jsFunction,
-    QScriptValue &getXmlDataFunction, QScriptValue &setXmlDataFunction, const bool &backupsEnabled, const bool &verboseEnabled){
+                                                                   QScriptEngine &engine, clock_t &begin, double elapsed_secs, QScriptValue &engineResult, QScriptValue &jsFunction,
+                                                                   QScriptValue &getXmlDataFunction, QScriptValue &setXmlDataFunction, const bool &backupsEnabled, const bool &verboseEnabled){
         if(backupsEnabled){
             UtilXmlTools::backupFile(fileName, verboseEnabled);
