dataTree stores the data part of the XForm definition (stuff in `<instance></instance>`), controlTree stores the controls part of the XForm (stuff in `<body>`).   Since each question usually has a part of its definition in both sections, for the most part these two trees store the same exact structure of mugs.  The main exceptions are:

- "hidden values" don't have a control element / don't get added to the control tree (actually, I'm not 100% sure about the second part)
- "choices" only have a control element / don't get added to the data tree

I always assumed that the reason they were separate is because while Vellum deals with XForms where the instance and body have the same structure, as far as I can tell the `ref` attributes which associate control elements with data elements could be arbitrary, and so having separate trees was geared towards supporting arbitrary XForms.  However, I'm pretty certain that Vellum won't really handle anything beyond what it expects, and there's not that much reason to, so maybe it would be worth eliminating the multiple trees.

```xml
<input ref="/data/anganwadi_num" appearance="numeric">
    <label ref="jr:itext('anganwadi_num-label')" />
</input>
<group ref="/data/question130">
	<label ref="jr:itext('question130-label')" />
	<group ref="/data/question130/question131"></group>
</group>
		
```