add Graph.transactional function