Is it really that useful not to loadImmediately during tests? Why? Complicates the logic later in the class. Without two ways of starting, you wouldn't have to synchronize on loadData, and getGeoData could just call wait as in the later comment. The current scheme also doesn't prevent loadData from being called twice -- will comment on this below.