root and children impl
size function impl