provides a simple way to defer initialization of an object until its methods are called
Larry Kyrala
MIT