First of all, I love what you did! It would be nice to use `async` functions in e.g. `ifPresent` and wait for them with `async`