Actual lazy initialization

this may not be the cleanest implementation but it works