change api; add transaction log
add mockito