diff --git a/graphite.cabal b/graphite.cabal
--- a/graphite.cabal
+++ b/graphite.cabal
@@ -1,5 +1,5 @@
 name:                graphite
-version:             0.9.5.1
+version:             0.9.6.0
 synopsis:            Graphs and networks library
 description:         Represent, analyze and visualize graphs
 homepage:            https://github.com/alx741/graphite#readme
diff --git a/src/Data/Graph/DGraph.hs b/src/Data/Graph/DGraph.hs
--- a/src/Data/Graph/DGraph.hs
+++ b/src/Data/Graph/DGraph.hs
@@ -125,10 +125,7 @@
 
     insertVertex v (DGraph s g) = DGraph s $ hashMapInsert v HM.empty g
 
-    containsEdgePair graph@(DGraph _ g) (v1, v2) =
-        containsVertex graph v1 && containsVertex graph v2 && v2 `HM.member` v1Links
-        where v1Links = getLinks v1 g
-
+    containsEdgePair (DGraph _ g) (v1, v2) = v2 `HM.member` (getLinks v1 g)
 
     incidentEdgeTriples g v = toTriple <$> incidentArcs g v
     insertEdgeTriple (v1, v2, e) = insertArc (Arc v1 v2 e)
diff --git a/src/Data/Graph/Generation.hs b/src/Data/Graph/Generation.hs
--- a/src/Data/Graph/Generation.hs
+++ b/src/Data/Graph/Generation.hs
@@ -27,7 +27,7 @@
 
 -- | Generate a random Erdős–Rényi G(n, p) model graph
 erdosRenyi :: Graph g => Int -> Float -> IO (g Int ())
-erdosRenyi n = rndGraph' (1, n)
+erdosRenyi n p = rndGraph' p [1..n]
 
 -- | 'erdosRenyi' convinience 'UGraph' generation function
 erdosRenyiU :: Int -> Float -> IO (UGraph Int ())
@@ -38,15 +38,15 @@
 erdosRenyiD = erdosRenyi
 
 
--- | Generate a random graph with vertices in /v/ across range of given bounds,
+-- | Generate a random graph for all the vertices of type /v/ in the list,
 -- random edge attributes in /e/ within given bounds, and some existing
 -- probability for each possible edge as per the Erdős–Rényi model
-rndGraph :: forall g v e . (Graph g, Hashable v, Eq v, Enum v, Random e)
- => (v, v)
- -> (e, e)
+rndGraph :: forall g v e . (Graph g, Hashable v, Eq v, Random e)
+ => (e, e)
  -> Float
+ -> [v]
  -> IO (g v e)
-rndGraph (n1, n2) edgeBounds p = go [n1..n2] (probability p) empty
+rndGraph edgeBounds p verts = go verts (probability p) empty
     where
         go :: [v] -> Float -> g v e -> IO (g v e)
         go [] _ g = return g
@@ -60,11 +60,11 @@
 
 
 -- | Same as 'rndGraph' but uses attributeless edges
-rndGraph' :: forall g v . (Graph g, Hashable v, Eq v, Enum v)
- => (v, v)
- -> Float
+rndGraph' :: forall g v . (Graph g, Hashable v, Eq v)
+ => Float
+ -> [v]
  -> IO (g v ())
-rndGraph' (n1, n2) p = go [n1..n2] (probability p) empty
+rndGraph' p verts = go verts (probability p) empty
     where
         go :: [v] -> Float -> g v () -> IO (g v ())
         go [] _ g = return g
diff --git a/src/Data/Graph/Types.hs b/src/Data/Graph/Types.hs
--- a/src/Data/Graph/Types.hs
+++ b/src/Data/Graph/Types.hs
@@ -40,8 +40,6 @@
 -- class should be used for algorithms that are graph-directionality agnostic,
 -- otherwise use the more specific ones in 'UGraph' and 'DGraph'
 class Graph g where
-    -- * Properties
-
     -- | The Empty (order-zero) graph with no vertices and no edges
     empty :: (Hashable v) => g v e
 
@@ -84,6 +82,7 @@
 
     -- | Tell if two vertices are adjacent
     areAdjacent :: (Hashable v, Eq v) => g v e -> v -> v -> Bool
+    areAdjacent g v1 v2 = containsEdgePair g (v1, v2) || containsEdgePair g (v2, v1)
 
     -- | Retrieve the adjacent vertices of a vertex
     adjacentVertices :: (Hashable v, Eq v) => g v e -> v -> [v]
diff --git a/src/Data/Graph/UGraph.hs b/src/Data/Graph/UGraph.hs
--- a/src/Data/Graph/UGraph.hs
+++ b/src/Data/Graph/UGraph.hs
@@ -102,9 +102,7 @@
     vertexDegree (UGraph _ g) v = length $ HM.keys $ getLinks v g
     insertVertex v (UGraph s g) = UGraph s $ hashMapInsert v HM.empty g
 
-    containsEdgePair graph@(UGraph _ g) (v1, v2) =
-        containsVertex graph v1 && containsVertex graph v2 && v2 `HM.member` v1Links
-        where v1Links = getLinks v1 g
+    containsEdgePair (UGraph _ g) (v1, v2) = v2 `HM.member` (getLinks v1 g)
 
     incidentEdgeTriples g v = toTriple <$> incidentEdges g v
     insertEdgeTriple (v1, v2, e) = insertEdge (Edge v1 v2 e)
