diff --git a/trainer/src/MacaonTrain.cpp b/trainer/src/MacaonTrain.cpp
index 9227e7222095465eb3589c77e35737b183c9b9f2..21529bf3b4e29b86a851f69dad48ae225d12d8eb 100644
--- a/trainer/src/MacaonTrain.cpp
+++ b/trainer/src/MacaonTrain.cpp
@@ -205,7 +205,7 @@ int MacaonTrain::main()
           if (entry.is_regular_file())
             std::filesystem::remove(entry.path());
     }
-    if (trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractGold))
+    if (trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractGold) or trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractDynamic))
     {
       machine.setDictsState(Dict::State::Open);
       trainer.createDataset(goldConfig, debug, modelPath/"examples/train", currentEpoch, trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractDynamic));
@@ -227,16 +227,6 @@ int MacaonTrain::main()
 
       machine.getClassifier()->resetOptimizer();
     }
-    if (trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractDynamic))
-    {
-      machine.setDictsState(Dict::State::Open);
-      trainer.createDataset(goldConfig, debug, modelPath/"examples/train", currentEpoch, trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractDynamic));
-      if (!computeDevScore)
-      {
-        machine.setDictsState(Dict::State::Closed);
-        trainer.createDataset(devGoldConfig, debug, modelPath/"examples/dev", currentEpoch, trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractDynamic));
-      }
-    }
     if (trainStrategy[currentEpoch].count(Trainer::TrainAction::Save))
     {
       saved = true;