diff --git a/GUI/coregui/Models/DomainSimulationBuilder.cpp b/GUI/coregui/Models/DomainSimulationBuilder.cpp
index 1101f362eb12a8eda04b5e410fe34ae59fb10bb0..38cd285201403bbc9de636c389b10d965eb54864 100644
--- a/GUI/coregui/Models/DomainSimulationBuilder.cpp
+++ b/GUI/coregui/Models/DomainSimulationBuilder.cpp
@@ -25,6 +25,7 @@
 #include "DetectorItems.h"
 #include "DomainObjectBuilder.h"
 #include "TransformToDomain.h"
+#include "SimulationOptionsItem.h"
 #include "GUIHelpers.h"
 #include <QDebug>
 #include <memory>
@@ -54,7 +55,8 @@ GISASSimulation *DomainSimulationBuilder::getSimulation(SampleModel *sampleModel
 
 //! Creates domain simulation from sample and instrument items.
 GISASSimulation *DomainSimulationBuilder::getSimulation(const MultiLayerItem *sampleItem,
-                                                   const InstrumentItem *instrumentItem)
+                                                        const InstrumentItem *instrumentItem,
+                                                        const SimulationOptionsItem *optionsItem)
 {
     if(!sampleItem || !instrumentItem) {
         QString message("DomainSimulationBuilder::getSimulation() -> Error. Either MultiLayerItem "
@@ -74,5 +76,9 @@ GISASSimulation *DomainSimulationBuilder::getSimulation(const MultiLayerItem *sa
 
     TransformToDomain::addMasksToSimulation(*instrumentItem->getDetectorItem(),
                                             result);
+
+    if(optionsItem)
+        TransformToDomain::setSimulationOptions(result, *optionsItem);
+
     return result;
 }
diff --git a/GUI/coregui/Models/DomainSimulationBuilder.h b/GUI/coregui/Models/DomainSimulationBuilder.h
index 6a0f4ead7baf6aa366beaa40024deeb59539a49c..2fc49ed0692d63642fabb45eda682ae95ea7daf7 100644
--- a/GUI/coregui/Models/DomainSimulationBuilder.h
+++ b/GUI/coregui/Models/DomainSimulationBuilder.h
@@ -24,6 +24,7 @@ class SampleModel;
 class InstrumentModel;
 class MultiLayerItem;
 class InstrumentItem;
+class SimulationOptionsItem;
 
 //! The DomainSimulationBuilder class builds the domain simulation
 //! from instrument and sample models.
@@ -36,7 +37,9 @@ public:
 
     static GISASSimulation *getSimulation(SampleModel *sampleModel, InstrumentModel *instrumentModel);
 
-    static GISASSimulation *getSimulation(const MultiLayerItem *sampleItem, const InstrumentItem *instrumentItem);
+    static GISASSimulation *getSimulation(const MultiLayerItem *sampleItem,
+                                          const InstrumentItem *instrumentItem,
+                                          const SimulationOptionsItem *optionsItem = 0);
 
 };
 
diff --git a/GUI/coregui/Models/JobItem.cpp b/GUI/coregui/Models/JobItem.cpp
index 76425ee540a33b185bc27de22cb6300a22f2029a..27f68b08fe998ccd7a65c8e3e1c7a7b667c1e294 100644
--- a/GUI/coregui/Models/JobItem.cpp
+++ b/GUI/coregui/Models/JobItem.cpp
@@ -169,10 +169,11 @@ void JobItem::setEndTime(const QString &end_time)
     setItemValue(P_END_TIME, end_time);
 }
 
+// Sets duration (msec -> "sec.msec")
 void JobItem::setDuration(int duration)
 {
     QString str;
-    str.sprintf("%6.3f", duration/1000.);
+    str.sprintf("%7.3f", duration/1000.);
     setItemValue(P_DURATION, str.simplified());
 }
 
@@ -198,22 +199,22 @@ void JobItem::setProgress(int progress)
 
 int JobItem::getNumberOfThreads() const
 {
-    return getSimulationOptions()->getNumberOfThreads();
+    return getSimulationOptionsItem()->getNumberOfThreads();
 }
 
 void JobItem::setRunPolicy(const QString &run_policy)
 {
-    getSimulationOptions()->setRunPolicy(run_policy);
+    getSimulationOptionsItem()->setRunPolicy(run_policy);
 }
 
 bool JobItem::runImmediately() const
 {
-    return getSimulationOptions()->runImmediately();
+    return getSimulationOptionsItem()->runImmediately();
 }
 
 bool JobItem::runInBackground() const
 {
-    return getSimulationOptions()->runInBackground();
+    return getSimulationOptionsItem()->runInBackground();
 }
 
 //! Returns MultiLayerItem of this JobItem, if from_backup=true, then backup'ed version of
@@ -238,12 +239,12 @@ void JobItem::setResults(const GISASSimulation *simulation)
     JobResultsPresenter::setResults(intensityItem, simulation);
 }
 
-SimulationOptionsItem *JobItem::getSimulationOptions()
+SimulationOptionsItem *JobItem::getSimulationOptionsItem()
 {
-    return const_cast<SimulationOptionsItem *>(static_cast<const JobItem*>(this)->getSimulationOptions());
+    return const_cast<SimulationOptionsItem *>(static_cast<const JobItem*>(this)->getSimulationOptionsItem());
 }
 
-const SimulationOptionsItem *JobItem::getSimulationOptions() const
+const SimulationOptionsItem *JobItem::getSimulationOptionsItem() const
 {
     const SimulationOptionsItem *result = dynamic_cast<const SimulationOptionsItem *>(getItem(T_SIMULATION_OPTIONS));
     if(!result) {
diff --git a/GUI/coregui/Models/JobItem.h b/GUI/coregui/Models/JobItem.h
index 5572086342e1de16294c96d1cce7dc89bc008ed4..ae720a4d3065efbd521666942ad0d07a3f3f7ceb 100644
--- a/GUI/coregui/Models/JobItem.h
+++ b/GUI/coregui/Models/JobItem.h
@@ -86,11 +86,12 @@ public:
 
     InstrumentItem *getInstrumentItem();
 
+    SimulationOptionsItem *getSimulationOptionsItem();
+
     void setResults(const GISASSimulation *simulation);
 
 private:
-    SimulationOptionsItem *getSimulationOptions();
-    const SimulationOptionsItem *getSimulationOptions() const;
+    const SimulationOptionsItem *getSimulationOptionsItem() const;
 };
 
 #endif // NJOBITEM_H
diff --git a/GUI/coregui/Models/JobQueueData.cpp b/GUI/coregui/Models/JobQueueData.cpp
index 376e164d03917ccde6c760ae2bcf5a954f097788..1ff6e9f9423da5a86ae4a2298d7db69a1dc4a8f3 100644
--- a/GUI/coregui/Models/JobQueueData.cpp
+++ b/GUI/coregui/Models/JobQueueData.cpp
@@ -99,7 +99,8 @@ void JobQueueData::runJob(JobItem *jobItem)
     GISASSimulation *simulation(0);
     try{
         simulation = DomainSimulationBuilder::getSimulation(jobItem->getMultiLayerItem(),
-                                                            jobItem->getInstrumentItem());
+                                                            jobItem->getInstrumentItem(),
+                                                            jobItem->getSimulationOptionsItem());
     } catch(const std::exception &ex) {
         QString message("JobQueueData::runJob() -> Error. Attempt to create sample/instrument object from user description "
                         "has failed with following error message.\n\n");
@@ -112,7 +113,7 @@ void JobQueueData::runJob(JobItem *jobItem)
         return;
     }
 
-    simulation->getOptions().setNumberOfThreads(jobItem->getNumberOfThreads());
+//    simulation->getOptions().setNumberOfThreads(jobItem->getNumberOfThreads());
     m_simulations[identifier] = simulation;
 
     JobRunner *runner = new JobRunner(identifier, simulation);
diff --git a/GUI/coregui/Models/SimulationOptionsItem.cpp b/GUI/coregui/Models/SimulationOptionsItem.cpp
index 75651d329ef43245ef9ec659b455b834f7bcc396..9f8419750ec14ba6aef137302981be196a466479 100644
--- a/GUI/coregui/Models/SimulationOptionsItem.cpp
+++ b/GUI/coregui/Models/SimulationOptionsItem.cpp
@@ -117,6 +117,16 @@ void SimulationOptionsItem::setRunPolicy(const QString &policy)
     setItemValue(P_RUN_POLICY, combo.getVariant());
 }
 
+QString SimulationOptionsItem::getComputationMethod() const
+{
+    return getItemValue(P_COMPUTATION_METHOD).toString();
+}
+
+int SimulationOptionsItem::getNumberOfMonteCarloPoints() const
+{
+    return getItemValue(P_MC_POINTS).toInt();
+}
+
 //! returns list with number of threads to select
 QStringList SimulationOptionsItem::getCPUUsageOptions()
 {
diff --git a/GUI/coregui/Models/SimulationOptionsItem.h b/GUI/coregui/Models/SimulationOptionsItem.h
index b93ddac2d52bd8c2e60f020217d1d63d51ed538d..814137109b5509f0c2530047d38d453417dcea29 100644
--- a/GUI/coregui/Models/SimulationOptionsItem.h
+++ b/GUI/coregui/Models/SimulationOptionsItem.h
@@ -40,6 +40,10 @@ public:
 
     void setRunPolicy(const QString &policy);
 
+    QString getComputationMethod() const;
+
+    int getNumberOfMonteCarloPoints() const;
+
 private:
     QStringList getCPUUsageOptions();
 };
diff --git a/GUI/coregui/Models/TransformToDomain.cpp b/GUI/coregui/Models/TransformToDomain.cpp
index a9b14291c6c6c152e777e5ec92a7bb27dfe8e643..1e12f2c331c53aa1480483763d3bf33682308d04 100644
--- a/GUI/coregui/Models/TransformToDomain.cpp
+++ b/GUI/coregui/Models/TransformToDomain.cpp
@@ -50,6 +50,7 @@
 #include "BornAgainNamespace.h"
 #include "ParticleDistributionItem.h"
 #include "FTDecayFunctionItems.h"
+#include "SimulationOptionsItem.h"
 
 
 #include <QDebug>
@@ -404,6 +405,21 @@ void TransformToDomain::addMasksToSimulation(const SessionItem &detector_item,
 
 }
 
+void TransformToDomain::setSimulationOptions(GISASSimulation *simulation,
+                                             const SessionItem &item)
+{
+    Q_ASSERT(item.modelType() == Constants::SimulationOptionsType);
+
+    if(auto optionItem = dynamic_cast<const SimulationOptionsItem *>(&item)) {
+        simulation->getOptions().setNumberOfThreads(optionItem->getNumberOfThreads());
+        if(optionItem->getComputationMethod() == Constants::SIMULATION_MONTECARLO) {
+            simulation->getOptions().setMonteCarloIntegration(true,
+                    optionItem->getNumberOfMonteCarloPoints());
+        }
+    }
+
+}
+
 
 void TransformToDomain::setTransformationInfo(IParticle *result, const SessionItem &item)
 {
diff --git a/GUI/coregui/Models/TransformToDomain.h b/GUI/coregui/Models/TransformToDomain.h
index e73d52a6e2a6948eca52d5d0188c5b08b925129d..eafe2eb0826d736f5c0ed02c308f06d9fbf34c94 100644
--- a/GUI/coregui/Models/TransformToDomain.h
+++ b/GUI/coregui/Models/TransformToDomain.h
@@ -45,6 +45,8 @@ BA_CORE_API_ void addDistributionParametersToSimulation(const SessionItem &beam_
                                                         GISASSimulation *simulation);
 BA_CORE_API_ void addMasksToSimulation(const SessionItem &detector_item,
                                                         GISASSimulation *simulation);
+BA_CORE_API_ void setSimulationOptions(GISASSimulation *simulation, const SessionItem &item);
+
 BA_CORE_API_ void setTransformationInfo(IParticle *result, const SessionItem &item);
 BA_CORE_API_ void setPositionInfo(IParticle *result, const SessionItem &item);
 BA_CORE_API_ void setRotationInfo(IParticle *result, const SessionItem &item);