convert hooks into soft hooks

This implements soft hooks in a very aggressive destructive way.

cc @Matt-Esch 
The performance and complexity overhead of permanent removal is not worth it.

If you do implement it please make it opt in or opt out.