added transactional interaction with DB