API: allow recursive tree