abstracted migration root logic