Trying to avoid weird race condition
Introduce a delegate to mitigate overload issues

It also serves as a place to doc the java methods