need delegation with delayed initialization.