better Rollback on errors: use defer