This method should be called `transact`