private CityGraph updateGraph(CityGraph cityGraph, CityEntity cityEntity, int recursionDepth) {
        if (recursionDepth > 0) {
            cityGraph.addNode(cityConverter.disassemble(cityEntity));
            cityGraph.addEdges(roadConverter.disassembleList(cityEntity.getRoads()));
            for (RoadEntity roadEntity : cityEntity.getRoads()) {
                if (roadEntity.getTargetCity() != null && !cityGraph.containsNode(roadEntity.getTargetCity())) {
                    updateGraph(cityGraph, roadEntity.getTargetCity(), recursionDepth - 1);
                }
                if (roadEntity.getSourceCity() != null && !cityGraph.containsNode(roadEntity.getSourceCity())) {
                    updateGraph(cityGraph, roadEntity.getSourceCity(), recursionDepth - 1);
                }
            }
        }
        //TODO: clear edges without any city
        return cityGraph;
    }