direct initialization instead of lazy-init
micro optimisation
emptyCallback is not static, improved performance