lazy node construction