transaction interface refactor