has better logging and some transaction support, but I think I'm going to remove the transaction stuff since I'm not happy with how it has turned out, look for it in the transaction_support branch
removes transaction stuff, while I got a version I liked ok, I felt that it was too fragile to be a good overall solution and that it was going to require a lot of maintenance to keep working