Refactor poisoning so we can cleanup when we disable poisoning mode.
The cleanup is not very smart for now, but as long as the abstraction
is correct, we can improve it later (and rehash the scope ?).