diff --git a/src/storage/dft/DFTElements.cpp b/src/storage/dft/DFTElements.cpp
deleted file mode 100644
index 4cf49e0b0..000000000
--- a/src/storage/dft/DFTElements.cpp
+++ /dev/null
@@ -1,127 +0,0 @@
-#include <src/exceptions/NotImplementedException.h>
-#include <src/utility/macros.h>
-#include "DFTElements.h"
-#include "elements/DFTRestriction.h"
-
-namespace storm {
-    namespace storage {
-
-        template<typename ValueType>
-        bool DFTElement<ValueType>::checkDontCareAnymore(storm::storage::DFTState<ValueType>& state, DFTStateSpaceGenerationQueues<ValueType>& queues) const {
-            if (state.dontCare(mId)) {
-                return false;
-            }
-            
-            // Check that no outgoing dependencies can be triggered anymore
-            for (DFTDependencyPointer dependency : mOutgoingDependencies) {
-                if (state.isOperational(dependency->dependentEvent()->id()) && state.isOperational(dependency->triggerEvent()->id())) {
-                    return false;
-                }
-            }
-            
-            bool hasParentSpare = false;
-
-            // Check that no parent can fail anymore
-            for(DFTGatePointer const& parent : mParents) {
-                if(state.isOperational(parent->id())) {
-                    return false;
-                }
-                if (parent->isSpareGate()) {
-                    hasParentSpare = true;
-                }
-            }
-            
-            state.setDontCare(mId);
-            if (hasParentSpare && !state.isActive(mId)) {
-                // Activate child for consistency in failed spares
-                state.activate(mId);
-            }
-            return true;
-        }
-
-        template<typename ValueType>
-        void DFTElement<ValueType>::extendSpareModule(std::set<size_t>& elementsInModule) const {
-            for(auto const& parent : mParents) {
-                if(elementsInModule.count(parent->id()) == 0 && !parent->isSpareGate()) {
-                    elementsInModule.insert(parent->id());
-                    parent->extendSpareModule(elementsInModule);
-                }
-            }
-        }
-
-        template<typename ValueType>
-        std::vector<size_t> DFTElement<ValueType>::independentUnit() const {
-            std::vector<size_t> res;
-            res.push_back(this->id());
-            // Extend for pdeps.
-            return res;
-        }
-
-        template<typename ValueType>
-        void DFTElement<ValueType>::extendUnit(std::set<size_t>& unit) const {
-            unit.insert(mId);
-        }
-
-        template<typename ValueType>
-        std::vector<size_t> DFTElement<ValueType>::independentSubDft(bool blockParents) const {
-            //std::cout << "INDEPENDENT SUBTREE CALL " << this->id() << std::endl;
-            std::vector<size_t> res;
-            res.push_back(this->id());
-            return res;
-        }
-
-        template<typename ValueType>
-        void DFTElement<ValueType>::extendSubDft(std::set<size_t>& elemsInSubtree, std::vector<size_t> const& parentsOfSubRoot, bool blockParents) const {
-            if(elemsInSubtree.count(this->id()) > 0) return;
-            if(std::find(parentsOfSubRoot.begin(), parentsOfSubRoot.end(), mId) != parentsOfSubRoot.end()) {
-                // This is a parent of the suspected root, thus it is not a subdft.
-                elemsInSubtree.clear();
-                return;
-            }
-            elemsInSubtree.insert(mId);
-            for(auto const& parent : mParents) {
-                if(blockParents && std::find(parentsOfSubRoot.begin(), parentsOfSubRoot.end(), parent->id()) != parentsOfSubRoot.end()) {
-                    continue;
-                }
-                parent->extendSubDft(elemsInSubtree, parentsOfSubRoot, blockParents);
-                if(elemsInSubtree.empty()) {
-                    return;
-                }
-            }
-            for(auto const& dep : mOutgoingDependencies) {
-                dep->extendSubDft(elemsInSubtree, parentsOfSubRoot, blockParents);
-                if(elemsInSubtree.empty()) {
-                    return;
-                }
-
-            }
-            
-            for(auto const& restr : mRestrictions) {
-                restr->extendSubDft(elemsInSubtree, parentsOfSubRoot, blockParents);
-                if(elemsInSubtree.empty()) {
-                    return;
-                }
-            }
-            
-        }
-
-
-        template<typename ValueType>
-        bool DFTBE<ValueType>::checkDontCareAnymore(storm::storage::DFTState<ValueType>& state, DFTStateSpaceGenerationQueues<ValueType>& queues) const {
-            if(DFTElement<ValueType>::checkDontCareAnymore(state, queues)) {
-                state.beNoLongerFailable(this->mId);
-                return true;
-            }
-            return false;
-        }
-
-
-        // Explicitly instantiate the class.
-        template class DFTBE<double>;
-
-#ifdef STORM_HAVE_CARL
-        template class DFTBE<RationalFunction>;
-#endif
-        
-    }
-}
diff --git a/src/storage/dft/elements/DFTBE.h b/src/storage/dft/elements/DFTBE.h
index 5e09e965e..a9c5b030d 100644
--- a/src/storage/dft/elements/DFTBE.h
+++ b/src/storage/dft/elements/DFTBE.h
@@ -93,7 +93,13 @@ namespace storm {
                 return (mActiveFailureRate == otherBE.mActiveFailureRate) && (mPassiveFailureRate == otherBE.mPassiveFailureRate);
             }
             
-            virtual bool checkDontCareAnymore(storm::storage::DFTState<ValueType>& state, DFTStateSpaceGenerationQueues<ValueType>& queues) const override;
+            virtual bool checkDontCareAnymore(storm::storage::DFTState<ValueType>& state, DFTStateSpaceGenerationQueues<ValueType>& queues) const override {
+                if(DFTElement<ValueType>::checkDontCareAnymore(state, queues)) {
+                    state.beNoLongerFailable(this->mId);
+                    return true;
+                }
+                return false;
+            }
         };
 
         template<typename ValueType>
diff --git a/src/storage/dft/elements/DFTElement.h b/src/storage/dft/elements/DFTElement.h
index d6840132a..11223f3fa 100644
--- a/src/storage/dft/elements/DFTElement.h
+++ b/src/storage/dft/elements/DFTElement.h
@@ -8,6 +8,7 @@
 #include <set>
 #include <vector>
 #include <memory>
+#include <map>
 
 
 
@@ -204,7 +205,7 @@ namespace storm {
                 return mOutgoingDependencies.size();
             }
             
-            std::set<DFTElement<ValueType>> restrictedItems() const {
+            /*std::set<DFTElement<ValueType>> restrictedItems() const {
                 std::set<DFTElement<ValueType>> result;
                 for(auto const& restr : mRestrictions) {
                     bool foundThis = false;
@@ -236,7 +237,7 @@ namespace storm {
                         }
                     }
                 }
-            }
+            }*/
             
             DFTDependencyVector const& outgoingDependencies() const {
                 return mOutgoingDependencies;
diff --git a/src/storage/dft/elements/DFTVot.h b/src/storage/dft/elements/DFTVot.h
index 3a3e818d2..0233d979d 100644
--- a/src/storage/dft/elements/DFTVot.h
+++ b/src/storage/dft/elements/DFTVot.h
@@ -1,4 +1,5 @@
 #pragma once 
+#include "DFTGate.h"
 namespace storm {
     namespace storage {