moved transaction spec to its own file