defer initialization until requested