Seems like Transactions are necessary. Implemented them around existing
add/update/delete methods