separate out drag-n-drop tree into its own module