add count_descendants