Disruption refactoring

**DO NOT MERGE**

pr to open the discussion on disruption handling 
you don't `BOOST_REQUIRE(impact)`?