introduce ExternalEdgeDirectedGraph