I am basing this implementation on the Scalding stats implementation (https://github.com/twitter/scalding/blob/develop/scalding-core/src/main/scala/com/twitter/scalding/Stats.scala). Static objects here make it easy to share global state, i.e. the stats which are defined and used in the user job code, but implemented and referenced to on remote nodes. Plus, AFAIK multiple storm executors need access to the statistics that are registered for the job, so they all need to get this info. I don't see an obvious way to do this without static objects, although I do agree this is quite brittle. Thoughts @ianoc @johnynek @sritchie ?