add helper struct for lazy initialisation based on DCLP
the code should be self-explanatory ;-)
The helper struct contains the necessary boiler plate code to perform lazy initialisation of pointer-like variables using the "double-checked-locking-pattern".