create lazily
delay controller creation