  implement this protocol if the `edgeExists` function is reflexive, i.e. if the
  edges have no associated direction.
 */
-protocol UndirectedGraph: Graph { }
+public protocol UndirectedGraph: Graph { }
 
 /**
  Description of a directed graph.

   
     Changes the graph in-place to add the edges.

     - parameter from: One of the vertices to add

     - throws: `GraphError.VertexNotPresent` if either vertex is not in the
       graph.

 implement this protocol if the `edgeExists` function is not reflexive, i.e. if
 the edges have an associated direction.
*/
public protocol DirectedGraph: Graph { }

/**
 Description of a weighted graph.

 Weighted graphs have a weight associated with each edge.
*/
public protocol WeightedGraph: Graph {
    /**
     Computes the weight associated with the given edge.

