Index: src/FunctionApproximation/Extractors.cpp
===================================================================
--- src/FunctionApproximation/Extractors.cpp	(revision d3e1d5d4486b2e09af478c48ac829a25fb521200)
+++ src/FunctionApproximation/Extractors.cpp	(revision d83d6492abd671df58bbc39c4ca809a226bba4d2)
@@ -67,4 +67,6 @@
 
 using namespace boost::assign;
+
+using namespace Extractors;
 
 FunctionModel::arguments_t
@@ -186,29 +188,4 @@
 }
 
-typedef size_t level_t;
-typedef size_t node_t;
-typedef std::multimap< level_t, node_t > nodes_per_level_t;
-typedef std::set<node_t> nodes_t;
-typedef std::set<nodes_t> set_of_nodes_t;
-typedef boost::property_map < boost::adjacency_list <>, boost::vertex_index_t >::type index_map_t;
-
-typedef boost::bimap<
-    boost::bimaps::set_of< size_t >,
-    boost::bimaps::multiset_of< Extractors::ParticleType_t >
-> type_index_lookup_t;
-
-typedef std::set<node_t> set_type;
-typedef std::set<set_type> powerset_type;
-
-typedef boost::adjacency_list < boost::vecS, boost::vecS, boost::undirectedS,
-    boost::no_property, boost::no_property > UndirectedGraph;
-typedef boost::subgraph< UndirectedGraph > UndirectedSubgraph;
-
-typedef std::map< node_t, std::pair<Extractors::ParticleType_t, size_t> > node_FragmentNode_map_t;
-
-typedef std::map< argument_t::indices_t, size_t> argument_placement_map_t;
-
-typedef std::map<size_t, size_t> argindex_to_nodeindex_t;
-
 void insertIntoNodeFragmentMap(
     node_FragmentNode_map_t &_node_FragmentNode_map,
@@ -334,5 +311,5 @@
  * \param index_map with indices per \a graph' vertex
  */
-static void generateAllInducedConnectedSubgraphs(
+void generateAllInducedConnectedSubgraphs(
     const size_t N,
     const level_t level,
@@ -438,5 +415,5 @@
 }
 
-static HomologyGraph createHomologyGraphFromNodes(
+HomologyGraph createHomologyGraphFromNodes(
     const nodes_t &nodes,
     const type_index_lookup_t &type_index_lookup,
@@ -501,32 +478,4 @@
 
   return HomologyGraph(graph_nodes, graph_edges);
-}
-
-/**
- * I have no idea why this is so complicated with BGL ...
- *
- * This is taken from the book "The Boost Graph Library: User Guide and Reference Manual, Portable Documents",
- * chapter "Basic Graph Algorithms", example on calculating the bacon number.
- */
-template <typename DistanceMap>
-class distance_recorder : public boost::default_bfs_visitor
-{
-public:
-  distance_recorder(DistanceMap dist) : d(dist) {}
-
-  template <typename Edge, typename Graph>
-  void tree_edge(Edge e, const Graph &g) const {
-    typename boost::graph_traits<Graph>::vertex_descriptor u = source(e,g), v = target(e,g);
-    d[v] = d[u] + 1;
-  }
-
-private:
-  DistanceMap d;
-};
-
-template <typename DistanceMap>
-distance_recorder<DistanceMap> record_distance(DistanceMap d)
-{
-  return distance_recorder<DistanceMap>(d);
 }
 
Index: src/FunctionApproximation/Extractors.hpp
===================================================================
--- src/FunctionApproximation/Extractors.hpp	(revision d3e1d5d4486b2e09af478c48ac829a25fb521200)
+++ src/FunctionApproximation/Extractors.hpp	(revision d83d6492abd671df58bbc39c4ca809a226bba4d2)
@@ -51,4 +51,74 @@
   typedef std::vector<ParticleType_t> ParticleTypes_t;
 
+  typedef size_t level_t;
+  typedef size_t node_t;
+  typedef std::multimap< level_t, node_t > nodes_per_level_t;
+  typedef std::set<node_t> nodes_t;
+  typedef std::set<nodes_t> set_of_nodes_t;
+  typedef boost::property_map < boost::adjacency_list <>, boost::vertex_index_t >::type index_map_t;
+
+  typedef boost::bimap<
+      boost::bimaps::set_of< size_t >,
+      boost::bimaps::multiset_of< Extractors::ParticleType_t >
+  > type_index_lookup_t;
+
+  typedef std::set<node_t> set_type;
+  typedef std::set<set_type> powerset_type;
+
+  typedef boost::adjacency_list < boost::vecS, boost::vecS, boost::undirectedS,
+      boost::no_property, boost::no_property > UndirectedGraph;
+  typedef boost::subgraph< UndirectedGraph > UndirectedSubgraph;
+
+  typedef std::map< node_t, std::pair<Extractors::ParticleType_t, size_t> > node_FragmentNode_map_t;
+
+  typedef std::map< argument_t::indices_t, size_t> argument_placement_map_t;
+
+  typedef std::map<size_t, size_t> argindex_to_nodeindex_t;
+
+  /**
+   * I have no idea why this is so complicated with BGL ...
+   *
+   * This is taken from the book "The Boost Graph Library: User Guide and Reference Manual, Portable Documents",
+   * chapter "Basic Graph Algorithms", example on calculating the bacon number.
+   */
+  template <typename DistanceMap>
+  class distance_recorder : public boost::default_bfs_visitor
+  {
+  public:
+    distance_recorder(DistanceMap dist) : d(dist) {}
+
+    template <typename Edge, typename Graph>
+    void tree_edge(Edge e, const Graph &g) const {
+      typename boost::graph_traits<Graph>::vertex_descriptor u = source(e,g), v = target(e,g);
+      d[v] = d[u] + 1;
+    }
+
+  private:
+    DistanceMap d;
+  };
+
+  template <typename DistanceMap>
+  distance_recorder<DistanceMap> record_distance(DistanceMap d)
+  {
+    return distance_recorder<DistanceMap>(d);
+  }
+
+  HomologyGraph createHomologyGraphFromNodes(
+      const nodes_t &nodes,
+      const type_index_lookup_t &type_index_lookup,
+      const UndirectedGraph &graph,
+      const index_map_t &index_map
+      );
+
+  void generateAllInducedConnectedSubgraphs(
+      const size_t N,
+      const level_t level,
+      const nodes_t &nodes,
+      set_of_nodes_t &set_of_nodes,
+      const nodes_per_level_t &nodes_per_level,
+      const UndirectedGraph &graph,
+      const std::vector<size_t> &_distance,
+      const index_map_t &index_map);
+
   /** Namespace for some internal helper functions.
    *
