refactoring
All the handlers will run on the next turn then `fulfill` function, but they will run in the same turn

plus some more refactoring
more refactoring
Final form!