diff --git a/src/storm-dft/transformations/DftToGspnTransformator.cpp b/src/storm-dft/transformations/DftToGspnTransformator.cpp
index d6e54cf5f..4c7c8dbf1 100644
--- a/src/storm-dft/transformations/DftToGspnTransformator.cpp
+++ b/src/storm-dft/transformations/DftToGspnTransformator.cpp
@@ -11,12 +11,14 @@ namespace storm {
             static constexpr const uint64_t defaultCapacity = 1;
 
             template<typename ValueType>
-            DftToGspnTransformator<ValueType>::DftToGspnTransformator(storm::storage::DFT<ValueType> const &dft) : mDft(dft) {
+            DftToGspnTransformator<ValueType>::DftToGspnTransformator(storm::storage::DFT<ValueType> const &dft) : mDft(
+                    dft) {
                 // Intentionally left empty.
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::transform(std::set<uint64_t> const &dontCareElements, bool smart, bool mergeDCFailed) {
+            void DftToGspnTransformator<ValueType>::transform(std::set<uint64_t> const &dontCareElements, bool smart,
+                                                              bool mergeDCFailed) {
                 this->dontCareElements = dontCareElements;
                 this->smart = smart;
                 this->mergedDCFailed = mergeDCFailed;
@@ -31,7 +33,8 @@ namespace storm {
 
             template<typename ValueType>
             uint64_t DftToGspnTransformator<ValueType>::toplevelFailedPlaceId() {
-                STORM_LOG_ASSERT(failedPlaces.size() > mDft.getTopLevelIndex(), "Failed place for top level element does not exist.");
+                STORM_LOG_ASSERT(failedPlaces.size() > mDft.getTopLevelIndex(),
+                                 "Failed place for top level element does not exist.");
                 return failedPlaces.at(mDft.getTopLevelIndex());
             }
 
@@ -67,18 +70,23 @@ namespace storm {
                             translateVOT(std::static_pointer_cast<storm::storage::DFTVot<ValueType> const>(dftElement));
                             break;
                         case storm::storage::DFTElementType::PAND:
-                            translatePAND(std::static_pointer_cast<storm::storage::DFTPand<ValueType> const>(dftElement),
-                                          std::static_pointer_cast<storm::storage::DFTPand<ValueType> const>(dftElement)->isInclusive());
+                            translatePAND(
+                                    std::static_pointer_cast<storm::storage::DFTPand<ValueType> const>(dftElement),
+                                    std::static_pointer_cast<storm::storage::DFTPand<ValueType> const>(
+                                            dftElement)->isInclusive());
                             break;
                         case storm::storage::DFTElementType::POR:
                             translatePOR(std::static_pointer_cast<storm::storage::DFTPor<ValueType> const>(dftElement),
-                                         std::static_pointer_cast<storm::storage::DFTPor<ValueType> const>(dftElement)->isInclusive());
+                                         std::static_pointer_cast<storm::storage::DFTPor<ValueType> const>(
+                                                 dftElement)->isInclusive());
                             break;
                         case storm::storage::DFTElementType::SPARE:
-                            translateSPARE(std::static_pointer_cast<storm::storage::DFTSpare<ValueType> const>(dftElement));
+                            translateSPARE(
+                                    std::static_pointer_cast<storm::storage::DFTSpare<ValueType> const>(dftElement));
                             break;
                         case storm::storage::DFTElementType::PDEP:
-                            translatePDEP(std::static_pointer_cast<storm::storage::DFTDependency<ValueType> const>(dftElement));
+                            translatePDEP(std::static_pointer_cast<storm::storage::DFTDependency<ValueType> const>(
+                                    dftElement));
                             break;
                         case storm::storage::DFTElementType::SEQ:
                             translateSeq(std::static_pointer_cast<storm::storage::DFTSeq<ValueType> const>(dftElement));
@@ -92,29 +100,48 @@ namespace storm {
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::translateBE(std::shared_ptr<storm::storage::DFTBE<ValueType> const> dftBE) {
+            void DftToGspnTransformator<ValueType>::translateBE(
+                    std::shared_ptr<storm::storage::DFTBE<ValueType> const> dftBE) {
                 double xcenter = mDft.getElementLayoutInfo(dftBE->id()).x;
                 double ycenter = mDft.getElementLayoutInfo(dftBE->id()).y;
 
                 uint64_t failedPlace = addFailedPlace(dftBE, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter));
 
-                uint64_t activePlace = builder.addPlace(defaultCapacity, isActiveInitially(dftBE) ? 1 : 0, dftBE->name() + STR_ACTIVATED);
+                uint64_t activePlace = builder.addPlace(defaultCapacity, isActiveInitially(dftBE) ? 1 : 0,
+                                                        dftBE->name() + STR_ACTIVATED);
                 activePlaces.emplace(dftBE->id(), activePlace);
                 builder.setPlaceLayoutInfo(activePlace, storm::gspn::LayoutInfo(xcenter - 3.0, ycenter));
 
-                uint64_t tActive = builder.addTimedTransition(defaultPriority, dftBE->activeFailureRate(), dftBE->name() + "_activeFailing");
+                uint64_t tActive = builder.addTimedTransition(defaultPriority, dftBE->activeFailureRate(),
+                                                              dftBE->name() + "_activeFailing");
                 builder.setTransitionLayoutInfo(tActive, storm::gspn::LayoutInfo(xcenter, ycenter + 3.0));
                 builder.addInputArc(activePlace, tActive);
                 builder.addInhibitionArc(failedPlace, tActive);
                 builder.addOutputArc(tActive, activePlace);
                 builder.addOutputArc(tActive, failedPlace);
 
-                uint64_t tPassive = builder.addTimedTransition(defaultPriority, dftBE->passiveFailureRate(), dftBE->name() + "_passiveFailing");
+                uint64_t tPassive = builder.addTimedTransition(defaultPriority, dftBE->passiveFailureRate(),
+                                                               dftBE->name() + "_passiveFailing");
                 builder.setTransitionLayoutInfo(tPassive, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0));
                 builder.addInhibitionArc(activePlace, tPassive);
                 builder.addInhibitionArc(failedPlace, tPassive);
                 builder.addOutputArc(tPassive, failedPlace);
 
+                if (dontCareElements.count(dftBE->id()) && dftBE->id() != mDft.getTopLevelIndex()) {
+                    u_int64_t tDontCare = addDontcareTransition(dftBE,
+                                                                storm::gspn::LayoutInfo(xcenter + 12.0, ycenter));
+                    if (!mergedDCFailed) {
+                        uint64_t dontCarePlace = builder.addPlace(defaultPriority, 0, dftBE->name() + STR_DONTCARE);
+                        builder.setPlaceLayoutInfo(dontCarePlace,
+                                                   storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 5.0));
+                        builder.addInhibitionArc(dontCarePlace, tDontCare);
+                        builder.addOutputArc(tDontCare, dontCarePlace);
+                    } else {
+                        builder.addInhibitionArc(failedPlace, tDontCare);
+                        builder.addOutputArc(tDontCare, failedPlace);
+                    }
+                }
+
                 if (!smart || dftBE->nrRestrictions() > 0) {
                     uint64_t disabledPlace = addDisabledPlace(dftBE, storm::gspn::LayoutInfo(xcenter - 9.0, ycenter));
                     builder.addInhibitionArc(disabledPlace, tActive);
@@ -122,14 +149,16 @@ namespace storm {
                 }
 
                 if (!smart || mDft.isRepresentative(dftBE->id())) {
-                    uint64_t unavailablePlace = addUnavailablePlace(dftBE, storm::gspn::LayoutInfo(xcenter + 9.0, ycenter));
+                    uint64_t unavailablePlace = addUnavailablePlace(dftBE,
+                                                                    storm::gspn::LayoutInfo(xcenter + 9.0, ycenter));
                     builder.addOutputArc(tActive, unavailablePlace);
                     builder.addOutputArc(tPassive, unavailablePlace);
                 }
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::translateCONSTF(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftConstF) {
+            void DftToGspnTransformator<ValueType>::translateCONSTF(
+                    std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftConstF) {
                 double xcenter = mDft.getElementLayoutInfo(dftConstF->id()).x;
                 double ycenter = mDft.getElementLayoutInfo(dftConstF->id()).y;
 
@@ -141,7 +170,8 @@ namespace storm {
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::translateCONSTS(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftConstS) {
+            void DftToGspnTransformator<ValueType>::translateCONSTS(
+                    std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftConstS) {
                 double xcenter = mDft.getElementLayoutInfo(dftConstS->id()).x;
                 double ycenter = mDft.getElementLayoutInfo(dftConstS->id()).y;
 
@@ -160,19 +190,85 @@ namespace storm {
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::translateAND(std::shared_ptr<storm::storage::DFTAnd<ValueType> const> dftAnd) {
+            void DftToGspnTransformator<ValueType>::translateAND(
+                    std::shared_ptr<storm::storage::DFTAnd<ValueType> const> dftAnd) {
                 double xcenter = mDft.getElementLayoutInfo(dftAnd->id()).x;
                 double ycenter = mDft.getElementLayoutInfo(dftAnd->id()).y;
 
                 uint64_t failedPlace = addFailedPlace(dftAnd, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0));
 
-                uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftAnd), 0.0, dftAnd->name() + STR_FAILING);
+                uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftAnd), 0.0,
+                                                                  dftAnd->name() + STR_FAILING);
                 builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter, ycenter + 3.0));
                 builder.addInhibitionArc(failedPlace, tFailed);
                 builder.addOutputArc(tFailed, failedPlace);
 
+                //TODO Make it smart
+                if (dontCareElements.count(dftAnd->id())) {
+                    if (dftAnd->id() != mDft.getTopLevelIndex()) {
+                        u_int64_t tDontCare = addDontcareTransition(dftAnd,
+                                                                    storm::gspn::LayoutInfo(xcenter + 16.0, ycenter));
+                        if (!mergedDCFailed) {
+                            uint64_t dontCarePlace = builder.addPlace(defaultPriority, 0,
+                                                                      dftAnd->name() + STR_DONTCARE);
+                            builder.setPlaceLayoutInfo(dontCarePlace,
+                                                       storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0));
+                            builder.addInhibitionArc(dontCarePlace, tDontCare);
+                            builder.addOutputArc(tDontCare, dontCarePlace);
+                            //Propagation
+                            uint64_t propagationPlace = builder.addPlace(defaultPriority, 0, dftAnd->name() + "_prop");
+                            builder.setPlaceLayoutInfo(propagationPlace,
+                                                       storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0));
+                            uint64_t tPropagationFailed = builder.addImmediateTransition(defaultPriority, 0.0,
+                                                                                         dftAnd->name() + "_prop_fail");
+                            builder.setTransitionLayoutInfo(tPropagationFailed,
+                                                            storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0));
+                            builder.addInhibitionArc(propagationPlace, tPropagationFailed);
+                            builder.addInputArc(failedPlace, tPropagationFailed);
+                            builder.addOutputArc(tPropagationFailed, failedPlace);
+                            builder.addOutputArc(tPropagationFailed, propagationPlace);
+                            uint64_t tPropagationDontCare = builder.addImmediateTransition(defaultPriority, 0.0,
+                                                                                           dftAnd->name() +
+                                                                                           "_prop_dontCare");
+                            builder.setTransitionLayoutInfo(tPropagationDontCare,
+                                                            storm::gspn::LayoutInfo(xcenter + 14.0, ycenter + 6.0));
+                            builder.addInhibitionArc(propagationPlace, tPropagationDontCare);
+                            builder.addInputArc(dontCarePlace, tPropagationDontCare);
+                            builder.addOutputArc(tPropagationDontCare, dontCarePlace);
+                            builder.addOutputArc(tPropagationDontCare, propagationPlace);
+                            for (auto const &child : dftAnd->children()) {
+                                if (dontCareElements.count(child->id())) {
+                                    u_int64_t childDontCare = dontcareTransitions.at(child->id());
+                                    builder.addInputArc(propagationPlace, childDontCare);
+                                    builder.addOutputArc(childDontCare, propagationPlace);
+                                }
+                            }
+                        } else {
+                            builder.addInhibitionArc(failedPlace, tDontCare);
+                            builder.addOutputArc(tDontCare, failedPlace);
+                            for (auto const &child : dftAnd->children()) {
+                                if (dontCareElements.count(child->id())) {
+                                    u_int64_t childDontCare = dontcareTransitions.at(child->id());
+                                    builder.addInputArc(failedPlace, childDontCare);
+                                    builder.addOutputArc(childDontCare, failedPlace);
+                                }
+                            }
+                        }
+                    } else {
+                        // If AND is TLE, simple failure propagation suffices
+                        for (auto const &child : dftAnd->children()) {
+                            if (dontCareElements.count(child->id())) {
+                                u_int64_t childDontCare = dontcareTransitions.at(child->id());
+                                builder.addInputArc(failedPlace, childDontCare);
+                                builder.addOutputArc(childDontCare, failedPlace);
+                            }
+                        }
+                    }
+                }
+
                 if (!smart || mDft.isRepresentative(dftAnd->id())) {
-                    uint64_t unavailablePlace = addUnavailablePlace(dftAnd, storm::gspn::LayoutInfo(xcenter + 6.0, ycenter - 3.0));
+                    uint64_t unavailablePlace = addUnavailablePlace(dftAnd, storm::gspn::LayoutInfo(xcenter + 6.0,
+                                                                                                    ycenter - 3.0));
                     builder.addOutputArc(tFailed, unavailablePlace);
                 }
 
@@ -183,22 +279,87 @@ namespace storm {
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::translateOR(std::shared_ptr<storm::storage::DFTOr<ValueType> const> dftOr) {
+            void DftToGspnTransformator<ValueType>::translateOR(
+                    std::shared_ptr<storm::storage::DFTOr<ValueType> const> dftOr) {
                 double xcenter = mDft.getElementLayoutInfo(dftOr->id()).x;
                 double ycenter = mDft.getElementLayoutInfo(dftOr->id()).y;
 
                 uint64_t failedPlace = addFailedPlace(dftOr, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0));
 
+                if (dontCareElements.count(dftOr->id())) {
+                    if (dftOr->id() != mDft.getTopLevelIndex()) {
+                        u_int64_t tDontCare = addDontcareTransition(dftOr,
+                                                                    storm::gspn::LayoutInfo(xcenter + 16.0, ycenter));
+                        if (!mergedDCFailed) {
+                            uint64_t dontCarePlace = builder.addPlace(defaultPriority, 0, dftOr->name() + STR_DONTCARE);
+                            builder.setPlaceLayoutInfo(dontCarePlace,
+                                                       storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0));
+                            builder.addInhibitionArc(dontCarePlace, tDontCare);
+                            builder.addOutputArc(tDontCare, dontCarePlace);
+                            //Propagation
+                            uint64_t propagationPlace = builder.addPlace(defaultPriority, 0, dftOr->name() + "_prop");
+                            builder.setPlaceLayoutInfo(propagationPlace,
+                                                       storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0));
+                            uint64_t tPropagationFailed = builder.addImmediateTransition(defaultPriority, 0.0,
+                                                                                         dftOr->name() + "_prop_fail");
+                            builder.setTransitionLayoutInfo(tPropagationFailed,
+                                                            storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0));
+                            builder.addInhibitionArc(propagationPlace, tPropagationFailed);
+                            builder.addInputArc(failedPlace, tPropagationFailed);
+                            builder.addOutputArc(tPropagationFailed, failedPlace);
+                            builder.addOutputArc(tPropagationFailed, propagationPlace);
+                            uint64_t tPropagationDontCare = builder.addImmediateTransition(defaultPriority, 0.0,
+                                                                                           dftOr->name() +
+                                                                                           "_prop_dontCare");
+                            builder.setTransitionLayoutInfo(tPropagationDontCare,
+                                                            storm::gspn::LayoutInfo(xcenter + 14.0, ycenter + 6.0));
+                            builder.addInhibitionArc(propagationPlace, tPropagationDontCare);
+                            builder.addInputArc(dontCarePlace, tPropagationDontCare);
+                            builder.addOutputArc(tPropagationDontCare, dontCarePlace);
+                            builder.addOutputArc(tPropagationDontCare, propagationPlace);
+                            for (auto const &child : dftOr->children()) {
+                                if (dontCareElements.count(child->id())) {
+                                    u_int64_t childDontCare = dontcareTransitions.at(child->id());
+                                    builder.addInputArc(propagationPlace, childDontCare);
+                                    builder.addOutputArc(childDontCare, propagationPlace);
+                                }
+                            }
+                        } else {
+                            builder.addInhibitionArc(failedPlace, tDontCare);
+                            builder.addOutputArc(tDontCare, failedPlace);
+                            for (auto const &child : dftOr->children()) {
+                                if (dontCareElements.count(child->id())) {
+                                    u_int64_t childDontCare = dontcareTransitions.at(child->id());
+                                    builder.addInputArc(failedPlace, childDontCare);
+                                    builder.addOutputArc(childDontCare, failedPlace);
+                                }
+                            }
+                        }
+                    } else {
+                        // If OR is TLE, simple failure propagation suffices
+                        for (auto const &child : dftOr->children()) {
+                            if (dontCareElements.count(child->id())) {
+                                u_int64_t childDontCare = dontcareTransitions.at(child->id());
+                                builder.addInputArc(failedPlace, childDontCare);
+                                builder.addOutputArc(childDontCare, failedPlace);
+                            }
+                        }
+                    }
+                }
+
                 bool isRepresentative = mDft.isRepresentative(dftOr->id());
                 uint64_t unavailablePlace = 0;
                 if (!smart || isRepresentative) {
-                    unavailablePlace = addUnavailablePlace(dftOr, storm::gspn::LayoutInfo(xcenter + 6.0, ycenter - 3.0));
+                    unavailablePlace = addUnavailablePlace(dftOr,
+                                                           storm::gspn::LayoutInfo(xcenter + 6.0, ycenter - 3.0));
                 }
 
                 for (size_t i = 0; i < dftOr->nrChildren(); ++i) {
                     auto const &child = dftOr->children().at(i);
-                    uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftOr), 0.0, dftOr->name() + STR_FAILING + std::to_string(i));
-                    builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter - 5.0 + i * 3.0, ycenter + 3.0));
+                    uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftOr), 0.0,
+                                                                      dftOr->name() + STR_FAILING + std::to_string(i));
+                    builder.setTransitionLayoutInfo(tFailed,
+                                                    storm::gspn::LayoutInfo(xcenter - 5.0 + i * 3.0, ycenter + 3.0));
                     builder.addInhibitionArc(failedPlace, tFailed);
                     builder.addOutputArc(tFailed, failedPlace);
                     if (!smart || isRepresentative) {
@@ -210,7 +371,8 @@ namespace storm {
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::translateVOT(std::shared_ptr<storm::storage::DFTVot<ValueType> const> dftVot) {
+            void DftToGspnTransformator<ValueType>::translateVOT(
+                    std::shared_ptr<storm::storage::DFTVot<ValueType> const> dftVot) {
                 // TODO: finish layouting
 
                 double xcenter = mDft.getElementLayoutInfo(dftVot->id()).x;
@@ -218,12 +380,14 @@ namespace storm {
 
                 uint64_t failedPlace = addFailedPlace(dftVot, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0));
 
-                uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftVot), 0.0, dftVot->name() + STR_FAILING);
+                uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftVot), 0.0,
+                                                                  dftVot->name() + STR_FAILING);
                 builder.addOutputArc(tFailed, failedPlace);
                 builder.addInhibitionArc(failedPlace, tFailed);
 
                 if (!smart || mDft.isRepresentative(dftVot->id())) {
-                    uint64_t unavailablePlace = addUnavailablePlace(dftVot, storm::gspn::LayoutInfo(xcenter + 6.0, ycenter - 3.0));
+                    uint64_t unavailablePlace = addUnavailablePlace(dftVot, storm::gspn::LayoutInfo(xcenter + 6.0,
+                                                                                                    ycenter - 3.0));
                     builder.addOutputArc(tFailed, unavailablePlace);
                 }
 
@@ -233,9 +397,12 @@ namespace storm {
 
                 for (size_t i = 0; i < dftVot->nrChildren(); ++i) {
                     auto const &child = dftVot->children().at(i);
-                    uint64_t childNextPlace = builder.addPlace(defaultCapacity, 1, dftVot->name() + "_child_next" + std::to_string(i));
+                    uint64_t childNextPlace = builder.addPlace(defaultCapacity, 1,
+                                                               dftVot->name() + "_child_next" + std::to_string(i));
 
-                    uint64_t tCollect = builder.addImmediateTransition(getFailPriority(dftVot), 0.0, dftVot->name() + "_child_collect" + std::to_string(i));
+                    uint64_t tCollect = builder.addImmediateTransition(getFailPriority(dftVot), 0.0,
+                                                                       dftVot->name() + "_child_collect" +
+                                                                       std::to_string(i));
                     builder.addOutputArc(tCollect, collectorPlace);
                     builder.addInputArc(childNextPlace, tCollect);
                     builder.addInputArc(getFailedPlace(child), tCollect);
@@ -244,19 +411,22 @@ namespace storm {
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::translatePAND(std::shared_ptr<storm::storage::DFTPand<ValueType> const> dftPand, bool inclusive) {
+            void DftToGspnTransformator<ValueType>::translatePAND(
+                    std::shared_ptr<storm::storage::DFTPand<ValueType> const> dftPand, bool inclusive) {
                 double xcenter = mDft.getElementLayoutInfo(dftPand->id()).x;
                 double ycenter = mDft.getElementLayoutInfo(dftPand->id()).y;
 
                 uint64_t failedPlace = addFailedPlace(dftPand, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter - 3.0));
 
-                uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftPand), 0.0, dftPand->name() + STR_FAILING);
+                uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftPand), 0.0,
+                                                                  dftPand->name() + STR_FAILING);
                 builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter + 3.0));
                 builder.addInhibitionArc(failedPlace, tFailed);
                 builder.addOutputArc(tFailed, failedPlace);
 
                 if (!smart || mDft.isRepresentative(dftPand->id())) {
-                    uint64_t unavailablePlace = addUnavailablePlace(dftPand, storm::gspn::LayoutInfo(xcenter + 9.0, ycenter - 3.0));
+                    uint64_t unavailablePlace = addUnavailablePlace(dftPand, storm::gspn::LayoutInfo(xcenter + 9.0,
+                                                                                                     ycenter - 3.0));
                     builder.addOutputArc(tFailed, unavailablePlace);
                 }
 
@@ -275,8 +445,11 @@ namespace storm {
                     // Transitions for fail-safe place
                     for (uint64_t i = 1; i < dftPand->nrChildren(); ++i) {
                         auto const &child = dftPand->children().at(i);
-                        uint64_t tFailSafe = builder.addImmediateTransition(getFailPriority(dftPand), 0.0, dftPand->name() + STR_FAILSAVING + std::to_string(i));
-                        builder.setTransitionLayoutInfo(tFailSafe, storm::gspn::LayoutInfo(xcenter - 6.0 + i * 3.0, ycenter + 3.0));
+                        uint64_t tFailSafe = builder.addImmediateTransition(getFailPriority(dftPand), 0.0,
+                                                                            dftPand->name() + STR_FAILSAVING +
+                                                                            std::to_string(i));
+                        builder.setTransitionLayoutInfo(tFailSafe, storm::gspn::LayoutInfo(xcenter - 6.0 + i * 3.0,
+                                                                                           ycenter + 3.0));
 
                         builder.addInputArc(getFailedPlace(child), tFailSafe);
                         builder.addOutputArc(tFailSafe, getFailedPlace(child));
@@ -298,8 +471,11 @@ namespace storm {
 
                         if (i < dftPand->nrChildren() - 1) {
                             // Not last child
-                            tFailSafeX = builder.addImmediateTransition(getFailPriority(dftPand), 0.0, dftPand->name() + STR_FAILING + "_" + std::to_string(i));
-                            builder.setTransitionLayoutInfo(tFailSafeX, storm::gspn::LayoutInfo(xcenter - 3.0, ycenter + 3.0));
+                            tFailSafeX = builder.addImmediateTransition(getFailPriority(dftPand), 0.0,
+                                                                        dftPand->name() + STR_FAILING + "_" +
+                                                                        std::to_string(i));
+                            builder.setTransitionLayoutInfo(tFailSafeX,
+                                                            storm::gspn::LayoutInfo(xcenter - 3.0, ycenter + 3.0));
                         } else {
                             // Last child
                             tFailSafeX = tFailed;
@@ -313,8 +489,10 @@ namespace storm {
 
                         if (i < dftPand->nrChildren() - 1) {
                             // Add fail-safe X place
-                            failSafeXPlace = builder.addPlace(defaultCapacity, 0, dftPand->name() + "_F_" + std::to_string(i));
-                            builder.setPlaceLayoutInfo(failSafeXPlace, storm::gspn::LayoutInfo(xcenter - 3.0 + i * 3.0, ycenter));
+                            failSafeXPlace = builder.addPlace(defaultCapacity, 0,
+                                                              dftPand->name() + "_F_" + std::to_string(i));
+                            builder.setPlaceLayoutInfo(failSafeXPlace,
+                                                       storm::gspn::LayoutInfo(xcenter - 3.0 + i * 3.0, ycenter));
                             builder.addOutputArc(tFailSafeX, failSafeXPlace);
                             builder.addInhibitionArc(failSafeXPlace, tFailSafeX);
                         }
@@ -323,13 +501,15 @@ namespace storm {
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::translatePOR(std::shared_ptr<storm::storage::DFTPor<ValueType> const> dftPor, bool inclusive) {
+            void DftToGspnTransformator<ValueType>::translatePOR(
+                    std::shared_ptr<storm::storage::DFTPor<ValueType> const> dftPor, bool inclusive) {
                 double xcenter = mDft.getElementLayoutInfo(dftPor->id()).x;
                 double ycenter = mDft.getElementLayoutInfo(dftPor->id()).y;
 
                 uint64_t failedPlace = addFailedPlace(dftPor, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter - 3.0));
 
-                uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftPor), 0.0, dftPor->name() + STR_FAILING);
+                uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftPor), 0.0,
+                                                                  dftPor->name() + STR_FAILING);
                 builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter + 3.0));
                 builder.addOutputArc(tFailed, failedPlace);
                 builder.addInhibitionArc(failedPlace, tFailed);
@@ -339,7 +519,8 @@ namespace storm {
                 builder.addOutputArc(tFailed, getFailedPlace(dftPor->children().front()));
 
                 if (!smart || mDft.isRepresentative(dftPor->id())) {
-                    uint64_t unavailablePlace = addUnavailablePlace(dftPor, storm::gspn::LayoutInfo(xcenter + 9.0, ycenter - 3.0));
+                    uint64_t unavailablePlace = addUnavailablePlace(dftPor, storm::gspn::LayoutInfo(xcenter + 9.0,
+                                                                                                    ycenter - 3.0));
                     builder.addOutputArc(tFailed, unavailablePlace);
                 }
 
@@ -353,8 +534,11 @@ namespace storm {
                     // For all children except the first one
                     for (size_t i = 1; i < dftPor->nrChildren(); ++i) {
                         auto const &child = dftPor->children().at(i);
-                        uint64_t tFailSafe = builder.addImmediateTransition(getFailPriority(dftPor), 0.0, dftPor->name() + STR_FAILSAVING + std::to_string(i));
-                        builder.setTransitionLayoutInfo(tFailSafe, storm::gspn::LayoutInfo(xcenter - 3.0 + i * 3.0, ycenter + 3.0));
+                        uint64_t tFailSafe = builder.addImmediateTransition(getFailPriority(dftPor), 0.0,
+                                                                            dftPor->name() + STR_FAILSAVING +
+                                                                            std::to_string(i));
+                        builder.setTransitionLayoutInfo(tFailSafe, storm::gspn::LayoutInfo(xcenter - 3.0 + i * 3.0,
+                                                                                           ycenter + 3.0));
 
                         builder.addInputArc(getFailedPlace(child), tFailSafe);
                         builder.addOutputArc(tFailSafe, getFailedPlace(child));
@@ -375,7 +559,8 @@ namespace storm {
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::translateSPARE(std::shared_ptr<storm::storage::DFTSpare<ValueType> const> dftSpare) {
+            void DftToGspnTransformator<ValueType>::translateSPARE(
+                    std::shared_ptr<storm::storage::DFTSpare<ValueType> const> dftSpare) {
                 double xcenter = mDft.getElementLayoutInfo(dftSpare->id()).x;
                 double ycenter = mDft.getElementLayoutInfo(dftSpare->id()).y;
 
@@ -384,10 +569,12 @@ namespace storm {
                 bool isRepresentative = mDft.isRepresentative(dftSpare->id());
                 uint64_t unavailablePlace = 0;
                 if (!smart || isRepresentative) {
-                    unavailablePlace = addUnavailablePlace(dftSpare, storm::gspn::LayoutInfo(xcenter + 16.0, ycenter - 8.0));
+                    unavailablePlace = addUnavailablePlace(dftSpare,
+                                                           storm::gspn::LayoutInfo(xcenter + 16.0, ycenter - 8.0));
                 }
 
-                uint64_t activePlace = builder.addPlace(defaultCapacity, isActiveInitially(dftSpare) ? 1 : 0, dftSpare->name() + STR_ACTIVATED);
+                uint64_t activePlace = builder.addPlace(defaultCapacity, isActiveInitially(dftSpare) ? 1 : 0,
+                                                        dftSpare->name() + STR_ACTIVATED);
                 builder.setPlaceLayoutInfo(activePlace, storm::gspn::LayoutInfo(xcenter - 20.0, ycenter - 12.0));
                 activePlaces.emplace(dftSpare->id(), activePlace);
 
@@ -396,8 +583,10 @@ namespace storm {
                 for (size_t i = 0; i < dftSpare->nrChildren(); ++i) {
                     auto const &child = dftSpare->children().at(i);
                     // Consider next child
-                    size_t considerPlace = builder.addPlace(defaultCapacity, i == 0 ? 1 : 0, dftSpare->name() + "_consider_" + child->name());
-                    builder.setPlaceLayoutInfo(considerPlace, storm::gspn::LayoutInfo(xcenter - 15.0 + i * 14.0, ycenter - 8.0));
+                    size_t considerPlace = builder.addPlace(defaultCapacity, i == 0 ? 1 : 0,
+                                                            dftSpare->name() + "_consider_" + child->name());
+                    builder.setPlaceLayoutInfo(considerPlace,
+                                               storm::gspn::LayoutInfo(xcenter - 15.0 + i * 14.0, ycenter - 8.0));
 
                     if (i > 0) {
                         // Set output transition from previous next_claim
@@ -407,26 +596,36 @@ namespace storm {
                     }
 
                     // Cannot claim child
-                    uint64_t tConsiderNext = builder.addImmediateTransition(getFailPriority(dftSpare), 0.0, dftSpare->name() + "_cannot_claim_" + child->name());
-                    builder.setTransitionLayoutInfo(tConsiderNext, storm::gspn::LayoutInfo(xcenter - 7.0 + i * 14.0, ycenter - 8.0));
+                    uint64_t tConsiderNext = builder.addImmediateTransition(getFailPriority(dftSpare), 0.0,
+                                                                            dftSpare->name() + "_cannot_claim_" +
+                                                                            child->name());
+                    builder.setTransitionLayoutInfo(tConsiderNext,
+                                                    storm::gspn::LayoutInfo(xcenter - 7.0 + i * 14.0, ycenter - 8.0));
                     builder.addInputArc(considerPlace, tConsiderNext);
                     builder.addInputArc(unavailablePlaces.at(child->id()), tConsiderNext);
                     builder.addOutputArc(tConsiderNext, unavailablePlaces.at(child->id()));
                     tNextConsiders.push_back(tConsiderNext);
 
                     // Claimed child
-                    size_t claimedPlace = builder.addPlace(defaultCapacity, 0, dftSpare->name() + "_claimed_" + child->name());
-                    builder.setPlaceLayoutInfo(claimedPlace, storm::gspn::LayoutInfo(xcenter - 15.0 + i * 14.0, ycenter + 5.0));
-                    uint64_t tClaim = builder.addImmediateTransition(getFailPriority(dftSpare), 0.0, dftSpare->name() + "_claim_" + child->name());
-                    builder.setTransitionLayoutInfo(tClaim, storm::gspn::LayoutInfo(xcenter - 15.0 + i * 14.0, ycenter));
+                    size_t claimedPlace = builder.addPlace(defaultCapacity, 0,
+                                                           dftSpare->name() + "_claimed_" + child->name());
+                    builder.setPlaceLayoutInfo(claimedPlace,
+                                               storm::gspn::LayoutInfo(xcenter - 15.0 + i * 14.0, ycenter + 5.0));
+                    uint64_t tClaim = builder.addImmediateTransition(getFailPriority(dftSpare), 0.0,
+                                                                     dftSpare->name() + "_claim_" + child->name());
+                    builder.setTransitionLayoutInfo(tClaim,
+                                                    storm::gspn::LayoutInfo(xcenter - 15.0 + i * 14.0, ycenter));
                     builder.addInhibitionArc(unavailablePlaces.at(child->id()), tClaim);
                     builder.addInputArc(considerPlace, tClaim);
                     builder.addOutputArc(tClaim, claimedPlace);
                     builder.addOutputArc(tClaim, unavailablePlaces.at(child->id()));
 
                     // Claim next
-                    uint64_t tClaimNext = builder.addImmediateTransition(getFailPriority(dftSpare), 0.0, dftSpare->name() + "_next_claim_" + std::to_string(i));
-                    builder.setTransitionLayoutInfo(tClaimNext, storm::gspn::LayoutInfo(xcenter - 7.0 + i * 14.0, ycenter + 5.0));
+                    uint64_t tClaimNext = builder.addImmediateTransition(getFailPriority(dftSpare), 0.0,
+                                                                         dftSpare->name() + "_next_claim_" +
+                                                                         std::to_string(i));
+                    builder.setTransitionLayoutInfo(tClaimNext,
+                                                    storm::gspn::LayoutInfo(xcenter - 7.0 + i * 14.0, ycenter + 5.0));
                     builder.addInputArc(claimedPlace, tClaimNext);
                     builder.addInputArc(getFailedPlace(child), tClaimNext);
                     builder.addOutputArc(tClaimNext, getFailedPlace(child));
@@ -435,8 +634,12 @@ namespace storm {
                     // Activate all elements in spare module
                     uint64_t l = 0;
                     for (uint64_t k : mDft.module(child->id())) {
-                        uint64_t tActivate = builder.addImmediateTransition(defaultPriority, 0.0, dftSpare->name() + "_activate_" + std::to_string(i) + "_" + std::to_string(k));
-                        builder.setTransitionLayoutInfo(tActivate, storm::gspn::LayoutInfo(xcenter - 18.0 + (i + l) * 3, ycenter - 12.0));
+                        uint64_t tActivate = builder.addImmediateTransition(defaultPriority, 0.0,
+                                                                            dftSpare->name() + "_activate_" +
+                                                                            std::to_string(i) + "_" +
+                                                                            std::to_string(k));
+                        builder.setTransitionLayoutInfo(tActivate, storm::gspn::LayoutInfo(xcenter - 18.0 + (i + l) * 3,
+                                                                                           ycenter - 12.0));
                         builder.addInhibitionArc(activePlaces.at(k), tActivate);
                         builder.addInputArc(claimedPlace, tActivate);
                         builder.addInputArc(activePlace, tActivate);
@@ -458,7 +661,8 @@ namespace storm {
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::translatePDEP(std::shared_ptr<storm::storage::DFTDependency<ValueType> const> dftDependency) {
+            void DftToGspnTransformator<ValueType>::translatePDEP(
+                    std::shared_ptr<storm::storage::DFTDependency<ValueType> const> dftDependency) {
                 double xcenter = mDft.getElementLayoutInfo(dftDependency->id()).x;
                 double ycenter = mDft.getElementLayoutInfo(dftDependency->id()).y;
 
@@ -476,7 +680,8 @@ namespace storm {
                     uint64_t coinPlace = builder.addPlace(defaultCapacity, 1, dftDependency->name() + "_coin");
                     builder.setPlaceLayoutInfo(coinPlace, storm::gspn::LayoutInfo(xcenter - 5.0, ycenter + 2.0));
 
-                    uint64_t tStartFlip = builder.addImmediateTransition(defaultPriority, 0.0, dftDependency->name() + "_start_flip");
+                    uint64_t tStartFlip = builder.addImmediateTransition(defaultPriority, 0.0,
+                                                                         dftDependency->name() + "_start_flip");
                     builder.addInputArc(coinPlace, tStartFlip);
                     builder.addInputArc(getFailedPlace(dftDependency->triggerEvent()), tStartFlip);
                     builder.addOutputArc(tStartFlip, getFailedPlace(dftDependency->triggerEvent()));
@@ -485,11 +690,14 @@ namespace storm {
                     builder.setPlaceLayoutInfo(flipPlace, storm::gspn::LayoutInfo(xcenter - 2.0, ycenter + 2.0));
                     builder.addOutputArc(tStartFlip, flipPlace);
 
-                    uint64_t tWinFlip = builder.addImmediateTransition(defaultPriority, dftDependency->probability(), "_win_flip");
+                    uint64_t tWinFlip = builder.addImmediateTransition(defaultPriority, dftDependency->probability(),
+                                                                       "_win_flip");
                     builder.addInputArc(flipPlace, tWinFlip);
                     builder.addOutputArc(tWinFlip, forwardPlace);
 
-                    uint64_t tLooseFlip = builder.addImmediateTransition(defaultPriority, storm::utility::one<ValueType>() - dftDependency->probability(), "_loose_flip");
+                    uint64_t tLooseFlip = builder.addImmediateTransition(defaultPriority,
+                                                                         storm::utility::one<ValueType>() -
+                                                                         dftDependency->probability(), "_loose_flip");
                     builder.addInputArc(flipPlace, tLooseFlip);
                 } else {
                     // FDEP
@@ -497,7 +705,9 @@ namespace storm {
                 }
 
                 for (auto const &child : dftDependency->dependentEvents()) {
-                    uint64_t tForwardFailure = builder.addImmediateTransition(defaultPriority, 0.0, dftDependency->name() + "_propagate_" + child->name());
+                    uint64_t tForwardFailure = builder.addImmediateTransition(defaultPriority, 0.0,
+                                                                              dftDependency->name() + "_propagate_" +
+                                                                              child->name());
                     builder.addInputArc(forwardPlace, tForwardFailure);
                     builder.addOutputArc(tForwardFailure, forwardPlace);
                     builder.addOutputArc(tForwardFailure, getFailedPlace(child));
@@ -512,8 +722,10 @@ namespace storm {
             }
 
             template<typename ValueType>
-            void DftToGspnTransformator<ValueType>::translateSeq(std::shared_ptr<storm::storage::DFTSeq<ValueType> const> dftSeq) {
-                STORM_LOG_THROW(dftSeq->allChildrenBEs(), storm::exceptions::NotImplementedException, "Sequence enforcers with gates as children are currently not supported");
+            void DftToGspnTransformator<ValueType>::translateSeq(
+                    std::shared_ptr<storm::storage::DFTSeq<ValueType> const> dftSeq) {
+                STORM_LOG_THROW(dftSeq->allChildrenBEs(), storm::exceptions::NotImplementedException,
+                                "Sequence enforcers with gates as children are currently not supported");
                 double xcenter = mDft.getElementLayoutInfo(dftSeq->id()).x;
                 double ycenter = mDft.getElementLayoutInfo(dftSeq->id()).y;
 
@@ -527,14 +739,18 @@ namespace storm {
                 for (size_t i = 0; i < dftSeq->nrChildren(); ++i) {
                     auto const &child = dftSeq->children().at(i);
 
-                    nextPlace = builder.addPlace(defaultCapacity, i == 0 ? 1 : 0, dftSeq->name() + "_next_" + child->name());
-                    builder.setPlaceLayoutInfo(nextPlace, storm::gspn::LayoutInfo(xcenter - 5.0 + i * 3.0, ycenter - 3.0));
+                    nextPlace = builder.addPlace(defaultCapacity, i == 0 ? 1 : 0,
+                                                 dftSeq->name() + "_next_" + child->name());
+                    builder.setPlaceLayoutInfo(nextPlace,
+                                               storm::gspn::LayoutInfo(xcenter - 5.0 + i * 3.0, ycenter - 3.0));
 
                     if (i > 0) {
                         builder.addOutputArc(tEnable, nextPlace);
                     }
-                    tEnable = builder.addImmediateTransition(defaultPriority, 0.0, dftSeq->name() + "_unblock_" + child->name());
-                    builder.setTransitionLayoutInfo(tEnable, storm::gspn::LayoutInfo(xcenter - 5.0 + i * 3.0, ycenter + 3.0));
+                    tEnable = builder.addImmediateTransition(defaultPriority, 0.0,
+                                                             dftSeq->name() + "_unblock_" + child->name());
+                    builder.setTransitionLayoutInfo(tEnable,
+                                                    storm::gspn::LayoutInfo(xcenter - 5.0 + i * 3.0, ycenter + 3.0));
                     builder.addInputArc(nextPlace, tEnable);
                     builder.addInputArc(disabledPlaces.at(child->id()), tEnable);
                     if (i > 0) {
@@ -546,9 +762,12 @@ namespace storm {
 
             template<typename ValueType>
             uint64_t
-            DftToGspnTransformator<ValueType>::addFailedPlace(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement, storm::gspn::LayoutInfo const &layoutInfo,
-                                                              bool initialFailed) {
-                uint64_t failedPlace = builder.addPlace(defaultCapacity, initialFailed ? 1 : 0, dftElement->name() + STR_FAILED);
+            DftToGspnTransformator<ValueType>::addFailedPlace(
+                    std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement,
+                    storm::gspn::LayoutInfo const &layoutInfo,
+                    bool initialFailed) {
+                uint64_t failedPlace = builder.addPlace(defaultCapacity, initialFailed ? 1 : 0,
+                                                        dftElement->name() + STR_FAILED);
                 assert(failedPlaces.size() == dftElement->id());
                 failedPlaces.push_back(failedPlace);
                 builder.setPlaceLayoutInfo(failedPlace, layoutInfo);
@@ -557,9 +776,11 @@ namespace storm {
 
 
             template<typename ValueType>
-            uint64_t DftToGspnTransformator<ValueType>::addUnavailablePlace(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement,
-                                                                            storm::gspn::LayoutInfo const &layoutInfo, bool initialAvailable) {
-                uint64_t unavailablePlace = builder.addPlace(defaultCapacity, initialAvailable ? 0 : 1, dftElement->name() + "_unavail");
+            uint64_t DftToGspnTransformator<ValueType>::addUnavailablePlace(
+                    std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement,
+                    storm::gspn::LayoutInfo const &layoutInfo, bool initialAvailable) {
+                uint64_t unavailablePlace = builder.addPlace(defaultCapacity, initialAvailable ? 0 : 1,
+                                                             dftElement->name() + "_unavail");
                 unavailablePlaces.emplace(dftElement->id(), unavailablePlace);
                 builder.setPlaceLayoutInfo(unavailablePlace, layoutInfo);
                 return unavailablePlace;
@@ -567,21 +788,39 @@ namespace storm {
 
             template<typename ValueType>
             uint64_t
-            DftToGspnTransformator<ValueType>::addDisabledPlace(std::shared_ptr<const storm::storage::DFTBE<ValueType> > dftBe, storm::gspn::LayoutInfo const &layoutInfo) {
-                uint64_t disabledPlace = builder.addPlace(dftBe->nrRestrictions(), dftBe->nrRestrictions(), dftBe->name() + "_dabled");
+            DftToGspnTransformator<ValueType>::addDisabledPlace(
+                    std::shared_ptr<const storm::storage::DFTBE<ValueType> > dftBe,
+                    storm::gspn::LayoutInfo const &layoutInfo) {
+                uint64_t disabledPlace = builder.addPlace(dftBe->nrRestrictions(), dftBe->nrRestrictions(),
+                                                          dftBe->name() + "_dabled");
                 disabledPlaces.emplace(dftBe->id(), disabledPlace);
                 builder.setPlaceLayoutInfo(disabledPlace, layoutInfo);
                 return disabledPlace;
             }
 
             template<typename ValueType>
-            bool DftToGspnTransformator<ValueType>::isActiveInitially(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement) {
+            uint64_t
+            DftToGspnTransformator<ValueType>::addDontcareTransition(
+                    std::shared_ptr<const storm::storage::DFTElement<ValueType> > dftElement,
+                    storm::gspn::LayoutInfo const &layoutInfo) {
+                uint64_t dontcareTransition = builder.addImmediateTransition(defaultPriority, 0.0,
+                                                                             dftElement->name() + STR_DONTCARE +
+                                                                             "_transition");
+                dontcareTransitions.emplace(dftElement->id(), dontcareTransition);
+                builder.setTransitionLayoutInfo(dontcareTransition, layoutInfo);
+                return dontcareTransition;
+            }
+
+            template<typename ValueType>
+            bool DftToGspnTransformator<ValueType>::isActiveInitially(
+                    std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement) {
                 // If element is in the top module, return true.
                 return !mDft.hasRepresentant(dftElement->id());
             }
 
             template<typename ValueType>
-            uint64_t DftToGspnTransformator<ValueType>::getFailPriority(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement) {
+            uint64_t DftToGspnTransformator<ValueType>::getFailPriority(
+                    std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement) {
                 // Temporariliy use one priority for all
                 return defaultPriority;
                 //return mDft.maxRank() - dftElement->rank() + 2;
diff --git a/src/storm-dft/transformations/DftToGspnTransformator.h b/src/storm-dft/transformations/DftToGspnTransformator.h
index d24b2c168..7753fb509 100644
--- a/src/storm-dft/transformations/DftToGspnTransformator.h
+++ b/src/storm-dft/transformations/DftToGspnTransformator.h
@@ -20,7 +20,7 @@ namespace storm {
                  *
                  * @param dft DFT
                  */
-                DftToGspnTransformator(storm::storage::DFT<ValueType> const& dft);
+                DftToGspnTransformator(storm::storage::DFT<ValueType> const &dft);
 
                 /*!
                  * Transform the DFT to a GSPN.
@@ -30,14 +30,15 @@ namespace storm {
                  *              Smart semantics will only generate necessary parts of the GSPNs.
                  * @param mergeDCFailed Flag indicating if Don't Care places and Failed places should be merged.
                  */
-                void transform(std::set<uint64_t> const& dontCareElements, bool smart = true, bool mergeDCFailed = true);
+                void
+                transform(std::set<uint64_t> const &dontCareElements, bool smart = true, bool mergeDCFailed = true);
 
                 /*!
                  * Extract Gspn by building
                  *
                  */
-                gspn::GSPN* obtainGSPN();
-                
+                gspn::GSPN *obtainGSPN();
+
                 /*!
                  * Get failed place id of top level element.
                  */
@@ -97,7 +98,8 @@ namespace storm {
                  * @param dftPand The PAND gate.
                  * @param inclusive Flag wether the PAND is inclusive (children are allowed to fail simultaneously and the PAND will fail nevertheless)
                  */
-                void translatePAND(std::shared_ptr<storm::storage::DFTPand<ValueType> const> dftPand, bool inclusive = true);
+                void
+                translatePAND(std::shared_ptr<storm::storage::DFTPand<ValueType> const> dftPand, bool inclusive = true);
 
                 /*!
                  * Translate a GSPN POR.
@@ -105,7 +107,8 @@ namespace storm {
                  * @param dftPor The POR gate.
                  * @param inclusive Flag wether the POR is inclusive (children are allowed to fail simultaneously and the POR will fail nevertheless)
                  */
-                void translatePOR(std::shared_ptr<storm::storage::DFTPor<ValueType> const> dftPor, bool inclusive = true);
+                void
+                translatePOR(std::shared_ptr<storm::storage::DFTPor<ValueType> const> dftPor, bool inclusive = true);
 
                 /*!
                  * Translate a GSPN SPARE.
@@ -157,7 +160,8 @@ namespace storm {
                  * @return Id of added failed place.
                  */
                 uint64_t
-                addFailedPlace(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement, storm::gspn::LayoutInfo const &layoutInfo, bool initialFailed = false);
+                addFailedPlace(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement,
+                               storm::gspn::LayoutInfo const &layoutInfo, bool initialFailed = false);
 
                 /*!
                  * Add unavailable place for element.
@@ -168,7 +172,8 @@ namespace storm {
                  *
                  * @return Id of added unavailable place.
                  */
-                uint64_t addUnavailablePlace(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement, storm::gspn::LayoutInfo const &layoutInfo,
+                uint64_t addUnavailablePlace(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement,
+                                             storm::gspn::LayoutInfo const &layoutInfo,
                                              bool initialAvailable = true);
 
                 /*!
@@ -179,7 +184,19 @@ namespace storm {
                  *
                  * @return Id of added disabled place.
                  */
-                uint64_t addDisabledPlace(std::shared_ptr<storm::storage::DFTBE<ValueType> const> dftBe, storm::gspn::LayoutInfo const& layoutInfo);
+                uint64_t addDisabledPlace(std::shared_ptr<storm::storage::DFTBE<ValueType> const> dftBe,
+                                          storm::gspn::LayoutInfo const &layoutInfo);
+
+                /*!
+                 * Add don't care place for element.
+                 *
+                 * @param dftBe Basic Element.
+                 * @param layoutInfo Information about layout.
+                 *
+                 * @return Id of added don't care place.
+                 */
+                uint64_t addDontcareTransition(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement,
+                                               storm::gspn::LayoutInfo const &layoutInfo);
 
                 /*!
                  * Get failed place for element.
@@ -191,8 +208,8 @@ namespace storm {
                 uint64_t getFailedPlace(std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement) {
                     return failedPlaces.at(dftElement->id());
                 }
-                
-                storm::storage::DFT<ValueType> const& mDft;
+
+                storm::storage::DFT<ValueType> const &mDft;
                 storm::gspn::GspnBuilder builder;
 
                 // Transformation options
@@ -208,14 +225,15 @@ namespace storm {
                 std::map<uint64_t, uint64_t> unavailablePlaces;
                 std::map<uint64_t, uint64_t> activePlaces;
                 std::map<uint64_t, uint64_t> disabledPlaces;
-
-                static constexpr const char* STR_FAILING = "_failing";          // Name standard for transitions that point towards a place, which in turn indicates the failure of a gate.
-                static constexpr const char* STR_FAILED = "_failed";            // Name standard for place which indicates the failure of a gate.
-                static constexpr const char* STR_FAILSAVING = "_failsaving";    // Name standard for transition that point towards a place, which in turn indicates the failsave state of a gate.
-                static constexpr const char* STR_FAILSAVE = "_failsave";        // Name standard for place which indicates the failsave state of a gate.
-                static constexpr const char* STR_ACTIVATING = "_activating";    // Name standard for transition that point towards a place, which in turn indicates its activity.
-                static constexpr const char* STR_ACTIVATED = "_active";         // Name standard for place which indicates the activity.
-                static constexpr const char* STR_DONTCARE = "_dontcare";        // Name standard for place which indicates Don't Care.
+                std::map<uint64_t, uint64_t> dontcareTransitions;
+
+                static constexpr const char *STR_FAILING = "_failing";          // Name standard for transitions that point towards a place, which in turn indicates the failure of a gate.
+                static constexpr const char *STR_FAILED = "_failed";            // Name standard for place which indicates the failure of a gate.
+                static constexpr const char *STR_FAILSAVING = "_failsaving";    // Name standard for transition that point towards a place, which in turn indicates the failsave state of a gate.
+                static constexpr const char *STR_FAILSAVE = "_failsave";        // Name standard for place which indicates the failsave state of a gate.
+                static constexpr const char *STR_ACTIVATING = "_activating";    // Name standard for transition that point towards a place, which in turn indicates its activity.
+                static constexpr const char *STR_ACTIVATED = "_active";         // Name standard for place which indicates the activity.
+                static constexpr const char *STR_DONTCARE = "_dontcare";        // Name standard for place which indicates Don't Care.
             };
         }
     }