add transactional detection
add save option