Index: src/FunctionApproximation/Extractors.cpp
===================================================================
--- src/FunctionApproximation/Extractors.cpp	(revision d3e1d5d4486b2e09af478c48ac829a25fb521200)
+++ src/FunctionApproximation/Extractors.cpp	(revision f5ea10be5591e537e574cb69c8f7b07b0149596b)
@@ -34,8 +34,4 @@
 #include <config.h>
 #endif
-
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/graph/breadth_first_search.hpp>
-#include <boost/graph/subgraph.hpp>
 
 //#include "CodePatterns/MemDebug.hpp"
@@ -48,7 +44,4 @@
 #include <vector>
 #include <boost/assign.hpp>
-#include <boost/bimap.hpp>
-#include <boost/bimap/set_of.hpp>
-#include <boost/bimap/multiset_of.hpp>
 #include <boost/bind.hpp>
 #include <boost/foreach.hpp>
@@ -67,4 +60,6 @@
 
 using namespace boost::assign;
+
+using namespace Extractors;
 
 FunctionModel::arguments_t
@@ -186,29 +181,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 +304,5 @@
  * \param index_map with indices per \a graph' vertex
  */
-static void generateAllInducedConnectedSubgraphs(
+void Extractors::generateAllInducedConnectedSubgraphs(
     const size_t N,
     const level_t level,
@@ -438,5 +408,5 @@
 }
 
-static HomologyGraph createHomologyGraphFromNodes(
+HomologyGraph Extractors::createHomologyGraphFromNodes(
     const nodes_t &nodes,
     const type_index_lookup_t &type_index_lookup,
@@ -501,32 +471,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 f5ea10be5591e537e574cb69c8f7b07b0149596b)
@@ -14,5 +14,14 @@
 #endif
 
+#include <boost/bimap.hpp>
+#include <boost/bimap/set_of.hpp>
+#include <boost/bimap/multiset_of.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/graph/breadth_first_search.hpp>
+#include <boost/graph/subgraph.hpp>
 #include <boost/function.hpp>
+
+#include <map>
+#include <set>
 
 #include "Fragmentation/EdgesPerFragment.hpp"
@@ -51,4 +60,78 @@
   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::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::property<boost::vertex_name_t, atomId_t>,
+      boost::property<boost::vertex_color_t, boost::default_color_type> /* needed for limited-depth DFS,
+      otherwise the property_map gets full size of graph */
+      > UndirectedGraph;
+  typedef boost::subgraph< UndirectedGraph > UndirectedSubgraph;
+
+  typedef boost::property_map < UndirectedGraph, boost::vertex_index_t >::type index_map_t;
+
+  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.
    *
