it is important to note that the singleton pattern is inherently unsafe for distributed environments, since the initialization state is not mirrored across different instances of the java vm