@loudej strongly wanted the thread safety/locking, I'd favor something simpler like just Lazy<T> myself