abstracting a bit more, and cleaning up a mess that is keeping it from working for things besides escrow transactions