This lazy initialization is dangerous, since it may be invoked out of the correct context