Updated to use lazy-loading of children to eliminate the circular reference problem