code reflactor
add transactional annotation