Steps 1-4 and 6 implemented. Remaining: GUI, step 5, and integrity constraints (plus any EC we want to attempt)