diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,11 @@
-# Revision history for exploring-interpreters 
+# Revision history for exploring-interpreters
 
 ## 0.2.0.0 -- 2021-03-15
-* First official version. 
+* First official version.
 
 ## 0.3.0.0 -- 2021-03-16
 * Require that definitional interpreters return configurations in the Maybe monad.
   This adds support for run-time errors by returning Nothing when an errors occurs.
+
+## 0.3.1.0 -- 2021-04-18
+* This version adds the 'leaves' function to the exploring interpreter.
diff --git a/Language/Explorer/Basic.hs b/Language/Explorer/Basic.hs
--- a/Language/Explorer/Basic.hs
+++ b/Language/Explorer/Basic.hs
@@ -3,7 +3,7 @@
     , execute
     , executeAll
     , revert
-    , dynamicRevert 
+    , dynamicRevert
     , ExplorerM.toTree
     , mkExplorerStack
     , mkExplorerTree
@@ -13,6 +13,7 @@
     , currRef
     , Ref
     , deref
+    , leaves
     , getTrace
     , getTraces
     , getPathsFromTo
@@ -89,3 +90,6 @@
 executionGraph e = (curr, nodes, map removeOutput graph)
   where
     (curr, nodes, graph) = ExplorerM.executionGraph e
+
+leaves :: Explorer p c -> [(Ref, c)]
+leaves = ExplorerM.leaves
diff --git a/Language/Explorer/Monadic.hs b/Language/Explorer/Monadic.hs
--- a/Language/Explorer/Monadic.hs
+++ b/Language/Explorer/Monadic.hs
@@ -5,7 +5,7 @@
     , execute
     , executeAll
     , revert
-    , dynamicRevert 
+    , dynamicRevert
     , toTree
     , incomingEdges
     , mkExplorerStack
@@ -15,6 +15,7 @@
     , config
     , execEnv
     , currRef
+    , leaves
     , Ref
     , deref
     , getTrace
@@ -124,7 +125,7 @@
 revert :: Ref -> Explorer p m c o -> Maybe (Explorer p m c o)
 revert r e = dynamicRevert (backTracking e) r e
 
-  
+
 toTree :: Explorer p m c o -> Tree (Ref, c)
 toTree exp = mkTree initialRef
   where graph = execEnv exp
@@ -180,3 +181,14 @@
     curr = currRef exp
     nodes = map fst (labNodes (execEnv exp))
     edges = map (\(s, t, p) -> ((s, fromJust $ deref exp s), p, (t, fromJust $ deref exp t)) ) (labEdges (execEnv exp))
+
+{-|
+  Returns all configurations that have not been the source for an execute action.
+  This corresponds to leaves in a tree or nodes without an outbound-edge in a graph.
+-}
+leaves :: Explorer p m c o -> [(Ref, c)]
+leaves exp = map refToPair leave_nodes
+  where
+    env = execEnv exp
+    refToPair = \r -> (r, fromJust $ deref exp r)
+    leave_nodes = nodes $ nfilter (\n -> (==0) $ outdeg env n) env
diff --git a/Language/Explorer/Pure.hs b/Language/Explorer/Pure.hs
--- a/Language/Explorer/Pure.hs
+++ b/Language/Explorer/Pure.hs
@@ -3,7 +3,7 @@
     , execute
     , executeAll
     , revert
-    , dynamicRevert 
+    , dynamicRevert
     , ExplorerM.toTree
     , incomingEdges
     , mkExplorerStack
@@ -14,6 +14,7 @@
     , currRef
     , Ref
     , deref
+    , leaves
     , getTrace
     , getTraces
     , getPathsFromTo
@@ -80,3 +81,6 @@
 
 executionGraph :: Explorer p c o -> (Ref, [Ref], [((Ref, c), (p, o), (Ref, c))])
 executionGraph = ExplorerM.executionGraph
+
+leaves :: Explorer p c o -> [(Ref, c)]
+leaves = ExplorerM.leaves
diff --git a/exploring-interpreters.cabal b/exploring-interpreters.cabal
--- a/exploring-interpreters.cabal
+++ b/exploring-interpreters.cabal
@@ -1,7 +1,7 @@
 cabal-version:       >=1.10
 
 name:                exploring-interpreters
-version:             0.3.0.0
+version:             0.3.1.0
 synopsis:            A generic exploring interpreter for exploratory programming
 -- synopsis:
 -- description:
