Since this can be called from different threads, it should be final