add Lazy Initialization pattern