ALmost finished lazy initialization