At this point I think we should probably consider either intercepting the callback in pouch.adapter, or moving more towards having the adapters be pure data abstractions and handling the actual logic in pouch.adapter (both kinda similiar idea, I was against the latter previously but getting convinced it may be a good idea)