let context manager deal with commits and rollbacks for us