add transaction functionality