A lot more work than I thought, but hoping to finish it...