add transaction repository and test, this time for real :p