lazily create child nodes
foramt