add transaction request and more refactorings