needs transaction annotations