add implementation and test to Transaction interface