make getChildren return arrays & objects
add recursive select/unselect