Add transactional implementation