Better error handling.  with will rollback errors properly