work on transaction