Index: src/Fragmentation/Automation/Controller/Commands/CheckResultsOperation.cpp
===================================================================
--- src/Fragmentation/Automation/Controller/Commands/CheckResultsOperation.cpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
+++ src/Fragmentation/Automation/Controller/Commands/CheckResultsOperation.cpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
@@ -0,0 +1,118 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2011-2012 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * CheckResultsOperation.cpp
+ *
+ *  Created on: Dec 11, 2011
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// boost asio needs specific operator new
+#include <boost/asio.hpp>
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include <boost/bind.hpp>
+#include <boost/foreach.hpp>
+#include <iostream>
+#include "Connection.hpp" // Must come before boost/serialization headers.
+#include "CodePatterns/Info.hpp"
+#include "CodePatterns/Log.hpp"
+#include "ControllerChoices.hpp"
+
+#include "Controller/Commands/CheckResultsOperation.hpp"
+
+/** Handle connect operation to send number of done jobs.
+ *
+ * \param e error code if something went wrong
+ * \param endpoint_iterator endpoint of the connection
+ */
+void CheckResultsOperation::handle_connect_check(const boost::system::error_code& e,
+    boost::asio::ip::tcp::resolver::iterator endpoint_iterator)
+{
+  Info info(__FUNCTION__);
+  if (!e)
+  {
+    // Successfully established connection. Give choice.
+    enum ControllerChoices choice = CheckState;
+    connection_.async_write(choice,
+      boost::bind(&CheckResultsOperation::handle_ReceiveDoneJobs, this,
+      boost::asio::placeholders::error));
+  } else if (endpoint_iterator != boost::asio::ip::tcp::resolver::iterator()) {
+    // Try the next endpoint.
+    connection_.socket().close();
+    boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
+    connection_.socket().async_connect(endpoint,
+      boost::bind(&CheckResultsOperation::handle_connect_check, this,
+      boost::asio::placeholders::error, ++endpoint_iterator));
+  } else {
+    // An error occurred. Log it and return. Since we are not starting a new
+    // operation the io_service will run out of work to do and the client will
+    // exit.
+    Exitflag = ErrorFlag;
+    ELOG(1, e.message());
+  }
+}
+
+/** Callback function when doneJobs have been received.
+ *
+ * \param e error code if something went wrong
+ */
+void CheckResultsOperation::handle_ReceiveDoneJobs(const boost::system::error_code& e)
+{
+  Info info(__FUNCTION__);
+  if (!e)
+  {
+    // The connection::async_read() function will automatically
+    // decode the data that is written to the underlying socket.
+    LOG(1, "INFO: Checking number of done jobs ...");
+    connection_.async_read(doneJobs,
+      boost::bind(&Operation::handle_FinishOperation, this,
+      boost::asio::placeholders::error));
+  }
+  else
+  {
+    // An error occurred.
+    Exitflag = ErrorFlag;
+    ELOG(1, e.message());
+  }
+}
+
+/** Internal function to connect to the endpoint of the server asynchronuously.
+ *
+ * We require internal connetion_ and host and service to be set up for this.
+ */
+void CheckResultsOperation::connect_check()
+{
+  Info info(__FUNCTION__);
+  // Resolve the host name into an IP address.
+  boost::asio::ip::tcp::resolver::iterator endpoint_iterator = getEndpointIterator();
+  boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
+
+  // Start an asynchronous connect operation.
+  std::cout << "Connecting to endpoint " << endpoint << " to check " << std::endl;
+  connection_.socket().async_connect(endpoint,
+    boost::bind(&CheckResultsOperation::handle_connect_check, this,
+      boost::asio::placeholders::error, ++endpoint_iterator));
+}
+
+/** Prepares the calculation of the results for the current jobs.
+ */
+void CheckResultsOperation::operator()()
+{
+  Info info(__FUNCTION__);
+  // connect
+  connect_check();
+  //disconnect
+  disconnect();
+}
Index: src/Fragmentation/Automation/Controller/Commands/CheckResultsOperation.hpp
===================================================================
--- src/Fragmentation/Automation/Controller/Commands/CheckResultsOperation.hpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
+++ src/Fragmentation/Automation/Controller/Commands/CheckResultsOperation.hpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
@@ -0,0 +1,63 @@
+/*
+ * CheckResultsOperation.hpp
+ *
+ *  Created on: Dec 11, 2011
+ *      Author: heber
+ */
+
+#ifndef FRAGMENTCONTROLLER_CHECKRESULTSOPERATION_HPP_
+#define FRAGMENTCONTROLLER_CHECKRESULTSOPERATION_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <boost/asio.hpp>
+#include <string>
+
+#include "Connection.hpp"
+
+#include "Controller/Commands/Operation.hpp"
+
+
+class CheckResultsOperation : public Operation  {
+public:
+  /// Constructor for class CheckResultsOperation.
+  CheckResultsOperation(Connection &_connection, const std::string& _host, const std::string& _service) :
+    Operation(_connection, _host, _service),
+    doneJobs(0)
+  {}
+  /// Destructor for class CheckResultsOperation
+  ~CheckResultsOperation() {}
+
+public:
+  // placing receive jobs operations into an io_service
+  virtual void operator()();
+
+  /// Handle completion of a CheckResults operation.
+  void handle_connect_check(const boost::system::error_code& e,
+      boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
+
+  /// Callback function when doneJobs have been received.
+  void handle_ReceiveDoneJobs(const boost::system::error_code& e);
+
+  /// internal function to connect to server and check done jobs
+  void connect_check();
+
+  /** Getter for doneJobs.
+   *
+   * \sa checkResults()
+   * \param doneJobs
+   */
+  size_t getDoneJobs() const
+  {
+    return doneJobs;
+  }
+
+protected:
+  /// currently calculated results
+  size_t doneJobs;
+};
+
+#endif /* FRAGMENTCONTROLLER_CHECKRESULTSOPERATION_HPP_ */
Index: src/Fragmentation/Automation/Controller/Commands/ReceiveJobsOperation.cpp
===================================================================
--- src/Fragmentation/Automation/Controller/Commands/ReceiveJobsOperation.cpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
+++ src/Fragmentation/Automation/Controller/Commands/ReceiveJobsOperation.cpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
@@ -0,0 +1,151 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2011-2012 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * ReceiveJobsOperation.cpp
+ *
+ *  Created on: Dec 11, 2011
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// boost asio needs specific operator new
+#include <boost/asio.hpp>
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include <boost/bind.hpp>
+#include <boost/foreach.hpp>
+#include <iostream>
+#include <vector>
+#include "Connection.hpp" // Must come before boost/serialization headers.
+#include <boost/serialization/vector.hpp>
+#include "CodePatterns/Info.hpp"
+#include "CodePatterns/Log.hpp"
+#include "ControllerChoices.hpp"
+#include "FragmentJob.hpp"
+
+#include "Controller/Commands/ReceiveJobsOperation.hpp"
+
+/** Handle connect operation to receive jobs from controller
+ *
+ * \param e error code if something went wrong
+ * \param endpoint_iterator endpoint of the connection
+ */
+void ReceiveJobsOperation::handle_connect_calc(const boost::system::error_code& e,
+    boost::asio::ip::tcp::resolver::iterator endpoint_iterator)
+{
+  Info info(__FUNCTION__);
+  if (!e)
+  {
+    // Successfully established connection. Give choice.
+    enum ControllerChoices choice = ReceiveJobs;
+    connection_.async_write(choice,
+      boost::bind(&ReceiveJobsOperation::handle_SendJobs, this,
+      boost::asio::placeholders::error));
+  } else if (endpoint_iterator != boost::asio::ip::tcp::resolver::iterator()) {
+    // Try the next endpoint.
+    connection_.socket().close();
+    boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
+    connection_.socket().async_connect(endpoint,
+      boost::bind(&ReceiveJobsOperation::handle_connect_calc, this,
+      boost::asio::placeholders::error, ++endpoint_iterator));
+  } else {
+    // An error occurred. Log it and return. Since we are not starting a new
+    // operation the io_service will run out of work to do and the client will
+    // exit.
+    Exitflag = ErrorFlag;
+    ELOG(1, e.message());
+  }
+}
+
+/** Callback function when jobs have been sent.
+ *
+ * \param e error code if something went wrong
+ */
+void ReceiveJobsOperation::handle_SendJobs(const boost::system::error_code& e)
+{
+  Info info(__FUNCTION__);
+  if (!e)
+  {
+    // Successfully established connection. Start operation to read the vector
+    // of jobs. The connection::async_write() function will automatically
+    // encode the data that is written to the underlying socket.
+    LOG(1, "INFO: Sending "+toString(jobs.size())+" jobs ...");
+    connection_.async_write(jobs,
+      boost::bind(&ReceiveJobsOperation::handle_FinishOperation, this,
+      boost::asio::placeholders::error));
+  }
+  else
+  {
+    // An error occurred.
+    Exitflag = ErrorFlag;
+    ELOG(1, e.message());
+  }
+
+  // Since we are not starting a new operation the io_service will run out of
+  // work to do and the client will exit.
+}
+
+/** Callback function when an operation has been completed.
+ *
+ * \param e error code if something went wrong
+ */
+void ReceiveJobsOperation::handle_FinishOperation(const boost::system::error_code& e)
+{
+  Info info(__FUNCTION__);
+
+  LOG(1, "INFO: Jobs have been sent. Clearing.");
+  jobs.clear();
+
+  Operation::handle_FinishOperation(e);
+}
+
+/** Internal function to connect to the endpoint of the server asynchronuously.
+ *
+ * We require internal connetion_ and host and service to be set up for this.
+ */
+void ReceiveJobsOperation::connect_calc()
+{
+  Info info(__FUNCTION__);
+  // Resolve the host name into an IP address.
+  boost::asio::ip::tcp::resolver::iterator endpoint_iterator = getEndpointIterator();
+  boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
+
+  // Start an asynchronous connect operation.
+  std::cout << "Connecting to endpoint " << endpoint << " to calc " << std::endl;
+  connection_.socket().async_connect(endpoint,
+    boost::bind(&ReceiveJobsOperation::handle_connect_calc, this,
+      boost::asio::placeholders::error, ++endpoint_iterator));
+}
+
+/** Place number of jobs into this controller.
+ *
+ * \param _jobs jobs to add
+ */
+void ReceiveJobsOperation::addJobs(const std::vector<FragmentJob> &_jobs)
+{
+  jobs.reserve(jobs.size()+_jobs.size());
+  BOOST_FOREACH(FragmentJob job, _jobs) {
+    jobs.push_back(job);
+  }
+}
+
+/** Prepares the calculation of the results for the current jobs.
+ */
+void ReceiveJobsOperation::operator()()
+{
+  Info info(__FUNCTION__);
+  // connect
+  connect_calc();
+  //disconnect
+  disconnect();
+}
Index: src/Fragmentation/Automation/Controller/Commands/ReceiveJobsOperation.hpp
===================================================================
--- src/Fragmentation/Automation/Controller/Commands/ReceiveJobsOperation.hpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
+++ src/Fragmentation/Automation/Controller/Commands/ReceiveJobsOperation.hpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
@@ -0,0 +1,66 @@
+/*
+ * ReceiveJobsOperation.hpp
+ *
+ *  Created on: Dec 11, 2011
+ *      Author: heber
+ */
+
+#ifndef FRAGMENTCONTROLLER_RECEIVEJOBSOPERATION_HPP_
+#define FRAGMENTCONTROLLER_RECEIVEJOBSOPERATION_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <boost/asio.hpp>
+#include <string>
+#include <vector>
+
+#include "Connection.hpp"
+#include "FragmentJob.hpp"
+
+#include "Controller/Commands/Operation.hpp"
+
+class ReceiveJobsOperation : public Operation {
+public:
+  /// Constructor for class ReceiveJobsOperation.
+  ReceiveJobsOperation(Connection &_connection, const std::string& _host, const std::string& _service) :
+    Operation(_connection, _host, _service) {}
+  /// Destructor for class ReceiveJobsOperation
+  ~ReceiveJobsOperation() {}
+
+public:
+  /// Placing receive jobs operations into an io_service
+  virtual void operator()();
+
+  /// Handle completion of a calculate operation.
+  void handle_connect_calc(const boost::system::error_code& e,
+      boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
+
+  /// Callback function when bunch of jobs have been sent.
+  void handle_SendJobs(const boost::system::error_code& e);
+
+  /// internal function to connect to server and send jobs for calculation
+  void connect_calc();
+
+  /// Setter for jobs
+  void addJobs(const std::vector<FragmentJob> &jobs);
+
+  /** Getter for number of jobs present in the queue.
+   *
+   * \return jobs.size()
+   */
+  size_t getPresentJobs() const
+  {
+    return jobs.size();
+  }
+
+protected:
+  void handle_FinishOperation(const boost::system::error_code& e);
+
+  /// bunch of jobs
+  std::vector<FragmentJob> jobs;
+};
+
+#endif /* FRAGMENTCONTROLLER_RECEIVEJOBSOPERATION_HPP_ */
Index: src/Fragmentation/Automation/Controller/Commands/SendResultsOperation.cpp
===================================================================
--- src/Fragmentation/Automation/Controller/Commands/SendResultsOperation.cpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
+++ src/Fragmentation/Automation/Controller/Commands/SendResultsOperation.cpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
@@ -0,0 +1,149 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2011-2012 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * SendResultsOperation.cpp
+ *
+ *  Created on: Dec 11, 2011
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// boost asio needs specific operator new
+#include <boost/asio.hpp>
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include <boost/bind.hpp>
+#include <boost/foreach.hpp>
+#include <iostream>
+#include <vector>
+#include "Connection.hpp" // Must come before boost/serialization headers.
+#include <boost/serialization/vector.hpp>
+#include "CodePatterns/Info.hpp"
+#include "CodePatterns/Log.hpp"
+#include "ControllerChoices.hpp"
+#include "FragmentResult.hpp"
+
+#include "Controller/Commands/SendResultsOperation.hpp"
+
+/** Handle connect operation to send results.
+ *
+ * \param e error code if something went wrong
+ * \param endpoint_iterator endpoint of the connection
+ */
+void SendResultsOperation::handle_connect_get(const boost::system::error_code& e,
+    boost::asio::ip::tcp::resolver::iterator endpoint_iterator)
+{
+  Info info(__FUNCTION__);
+  if (!e)
+  {
+    // Successfully established connection. Give choice.
+    enum ControllerChoices choice = SendResults;
+    connection_.async_write(choice,
+      boost::bind(&SendResultsOperation::handle_ReceivingResults, this,
+      boost::asio::placeholders::error));
+  } else if (endpoint_iterator != boost::asio::ip::tcp::resolver::iterator()) {
+    // Try the next endpoint.
+    connection_.socket().close();
+    boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
+    connection_.socket().async_connect(endpoint,
+      boost::bind(&SendResultsOperation::handle_connect_get, this,
+      boost::asio::placeholders::error, ++endpoint_iterator));
+  } else {
+    // An error occurred. Log it and return. Since we are not starting a new
+    // operation the io_service will run out of work to do and the client will
+    // exit.
+    Exitflag = ErrorFlag;
+    ELOG(1, e.message());
+  }
+}
+
+/** Callback function when results have been received.
+ *
+ * \param e error code if something went wrong
+ */
+void SendResultsOperation::handle_ReceivingResults(const boost::system::error_code& e)
+{
+  Info info(__FUNCTION__);
+  if (!e)
+  {
+     // The connection::async_read() function will automatically
+     // decode the data that is written to the underlying socket.
+     connection_.async_read(results,
+        boost::bind(&SendResultsOperation::handle_ReceivedResults, this,
+        boost::asio::placeholders::error));
+  }
+  else
+  {
+    // An error occurred.
+    Exitflag = ErrorFlag;
+    ELOG(1, e.message());
+  }
+
+  // Since we are not starting a new operation the io_service will run out of
+  // work to do and the client will exit.
+}
+
+
+/** Callback function when results have been received.
+ *
+ * \param e error code if something went wrong
+ */
+void SendResultsOperation::handle_ReceivedResults(const boost::system::error_code& e)
+{
+  Info info(__FUNCTION__);
+
+  LOG(1, "INFO: Received "+toString(results.size())+" results.");
+
+  Operation::handle_FinishOperation(e);
+}
+
+/** Internal function to connect to the endpoint of the server asynchronuously.
+ *
+ * We require internal connetion_ and host and service to be set up for this.
+ */
+void SendResultsOperation::connect_get()
+{
+  Info info(__FUNCTION__);
+  // Resolve the host name into an IP address.
+  boost::asio::ip::tcp::resolver::iterator endpoint_iterator = getEndpointIterator();
+  boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
+
+  // Start an asynchronous connect operation.
+  std::cout << "Connecting to endpoint " << endpoint << " to get results " << std::endl;
+  connection_.socket().async_connect(endpoint,
+    boost::bind(&SendResultsOperation::handle_connect_get, this,
+      boost::asio::placeholders::error, ++endpoint_iterator));
+}
+
+/** Getter for results.
+ *
+ * \sa calculateResults()
+ * \return vector of results for the added jobs (\sa addJobs()).
+ */
+std::vector<FragmentResult> SendResultsOperation::getResults()
+{
+  Info info(__FUNCTION__);
+  return results;
+}
+
+/** Function to initiate receival of results.
+ *
+ */
+void SendResultsOperation::operator()()
+{
+  // connect
+  connect_get();
+  //disconnect
+  disconnect();
+}
+
Index: src/Fragmentation/Automation/Controller/Commands/SendResultsOperation.hpp
===================================================================
--- src/Fragmentation/Automation/Controller/Commands/SendResultsOperation.hpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
+++ src/Fragmentation/Automation/Controller/Commands/SendResultsOperation.hpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
@@ -0,0 +1,58 @@
+/*
+ * SendResultsOperation.hpp
+ *
+ *  Created on: Dec 11, 2011
+ *      Author: heber
+ */
+
+#ifndef FRAGMENTCONTROLLER_SENDRESULTSOPERATION_HPP_
+#define FRAGMENTCONTROLLER_SENDRESULTSOPERATION_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <boost/asio.hpp>
+#include <string>
+#include <vector>
+
+#include "Connection.hpp"
+#include "FragmentResult.hpp"
+
+#include "Controller/Commands/Operation.hpp"
+
+class SendResultsOperation : public Operation  {
+public:
+  /// Constructor for class SendResultsOperation.
+  SendResultsOperation(Connection &_connection, const std::string& _host, const std::string& _service) :
+    Operation(_connection, _host, _service) {}
+  /// Destructor for class SendResultsOperation
+  ~SendResultsOperation() {}
+
+public:
+  // placing receive jobs operations into an io_service
+  virtual void operator()();
+
+  /// Handle completion of a GetResults operation.
+  void handle_connect_get(const boost::system::error_code& e,
+      boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
+
+  /// Callback function when results are about to be received.
+  void handle_ReceivingResults(const boost::system::error_code& e);
+
+  /// Callback function when results have been received.
+  void handle_ReceivedResults(const boost::system::error_code& e);
+
+  /// internal function to connect to server and receive calculated results
+  void connect_get();
+
+  /// Getter for results
+  std::vector<FragmentResult> getResults();
+
+protected:
+  /// bunch of results
+  std::vector<FragmentResult> results;
+};
+
+#endif /* FRAGMENTCONTROLLER_SENDRESULTSOPERATION_HPP_ */
Index: src/Fragmentation/Automation/Controller/Commands/ShutdownOperation.cpp
===================================================================
--- src/Fragmentation/Automation/Controller/Commands/ShutdownOperation.cpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
+++ src/Fragmentation/Automation/Controller/Commands/ShutdownOperation.cpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
@@ -0,0 +1,95 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2011-2012 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * ShutdownOperation.cpp
+ *
+ *  Created on: Dec 11, 2011
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// boost asio needs specific operator new
+#include <boost/asio.hpp>
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include <boost/bind.hpp>
+#include <boost/foreach.hpp>
+#include <iostream>
+#include "Connection.hpp" // Must come before boost/serialization headers.
+#include "CodePatterns/Info.hpp"
+#include "CodePatterns/Log.hpp"
+#include "ControllerChoices.hpp"
+
+#include "Controller/Commands/ShutdownOperation.hpp"
+
+/** Handle connect operation to shutdown scheduler.
+ *
+ * \param e error code if something went wrong
+ * \param endpoint_iterator endpoint of the connection
+ */
+void ShutdownOperation::handle_connect_shutdown(const boost::system::error_code& e,
+    boost::asio::ip::tcp::resolver::iterator endpoint_iterator)
+{
+  Info info(__FUNCTION__);
+  if (!e)
+  {
+    // Successfully established connection. Give choice.
+    enum ControllerChoices choice = Shutdown;
+    connection_.async_write(choice,
+      boost::bind(&ShutdownOperation::handle_FinishOperation, this,
+      boost::asio::placeholders::error));
+  } else if (endpoint_iterator != boost::asio::ip::tcp::resolver::iterator()) {
+    // Try the next endpoint.
+    connection_.socket().close();
+    boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
+    connection_.socket().async_connect(endpoint,
+      boost::bind(&ShutdownOperation::handle_connect_shutdown, this,
+      boost::asio::placeholders::error, ++endpoint_iterator));
+  } else {
+    // An error occurred. Log it and return. Since we are not starting a new
+    // operation the io_service will run out of work to do and the client will
+    // exit.
+    Exitflag = ErrorFlag;
+    ELOG(1, e.message());
+  }
+}
+
+/** Internal function to connect to the endpoint of the server asynchronuously.
+ *
+ * We require internal connetion_ and host and service to be set up for this.
+ */
+void ShutdownOperation::connect_shutdown()
+{
+  Info info(__FUNCTION__);
+  // Resolve the host name into an IP address.
+  boost::asio::ip::tcp::resolver::iterator endpoint_iterator = getEndpointIterator();
+  boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
+
+  // Start an asynchronous connect operation.
+  std::cout << "Connecting to endpoint " << endpoint << " to get results " << std::endl;
+  connection_.socket().async_connect(endpoint,
+    boost::bind(&ShutdownOperation::handle_connect_shutdown, this,
+      boost::asio::placeholders::error, ++endpoint_iterator));
+}
+
+/** Function to initiate shutdown of server.
+ *
+ */
+void ShutdownOperation::operator()()
+{
+  // connect
+  connect_shutdown();
+  //disconnect
+  disconnect();
+}
+
Index: src/Fragmentation/Automation/Controller/Commands/ShutdownOperation.hpp
===================================================================
--- src/Fragmentation/Automation/Controller/Commands/ShutdownOperation.hpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
+++ src/Fragmentation/Automation/Controller/Commands/ShutdownOperation.hpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
@@ -0,0 +1,44 @@
+/*
+ * ShutdownOperation.hpp
+ *
+ *  Created on: Dec 11, 2011
+ *      Author: heber
+ */
+
+#ifndef FRAGMENTCONTROLLER_SHUTDOWNOPERATION_HPP_
+#define FRAGMENTCONTROLLER_SHUTDOWNOPERATION_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <boost/asio.hpp>
+#include <string>
+#include <vector>
+
+#include "Connection.hpp"
+
+#include "Controller/Commands/Operation.hpp"
+
+class ShutdownOperation : public Operation  {
+public:
+  /// Constructor for class ShutdownOperation.
+  ShutdownOperation(Connection &_connection, const std::string& _host, const std::string& _service) :
+    Operation(_connection, _host, _service) {}
+  /// Destructor for class ShutdownOperation
+  ~ShutdownOperation() {}
+
+public:
+  // placing receive jobs operations into an io_service
+  virtual void operator()();
+
+  /// Handle completion of a Shutdown operation.
+  void handle_connect_shutdown(const boost::system::error_code& e,
+      boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
+
+  /// internal function to connect to server and receive calculated results
+  void connect_shutdown();
+};
+
+#endif /* FRAGMENTCONTROLLER_SHUTDOWNOPERATION_HPP_ */
Index: src/Fragmentation/Automation/Controller/FragmentController.cpp
===================================================================
--- src/Fragmentation/Automation/Controller/FragmentController.cpp	(revision 73d6fce636ade8bb851250adf52ad79adf5225a2)
+++ src/Fragmentation/Automation/Controller/FragmentController.cpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
@@ -23,15 +23,7 @@
 #include "CodePatterns/MemDebug.hpp"
 
-#include <boost/bind.hpp>
-#include <boost/foreach.hpp>
-#include <iostream>
-#include <vector>
 #include "Connection.hpp" // Must come before boost/serialization headers.
-#include <boost/serialization/vector.hpp>
 #include "CodePatterns/Info.hpp"
 #include "CodePatterns/Log.hpp"
-#include "FragmentJob.hpp"
-#include "FragmentResult.hpp"
-#include "ControllerChoices.hpp"
 
 #include "Controller/FragmentController.hpp"
@@ -49,6 +41,4 @@
     const std::string& _service) :
     connection_(io_service),
-    host(_host),
-    service(_service),
     recjobs(connection_, _host, _service),
     checkres(connection_, _host, _service),
@@ -65,392 +55,2 @@
 {}
 
-/** Handle connect operation to receive jobs from controller
- *
- * \param e error code if something went wrong
- * \param endpoint_iterator endpoint of the connection
- */
-void FragmentController::ReceiveJobsOperation::handle_connect_calc(const boost::system::error_code& e,
-    boost::asio::ip::tcp::resolver::iterator endpoint_iterator)
-{
-  Info info(__FUNCTION__);
-  if (!e)
-  {
-    // Successfully established connection. Give choice.
-    enum ControllerChoices choice = ReceiveJobs;
-    connection_.async_write(choice,
-      boost::bind(&FragmentController::ReceiveJobsOperation::handle_SendJobs, this,
-      boost::asio::placeholders::error));
-  } else if (endpoint_iterator != boost::asio::ip::tcp::resolver::iterator()) {
-    // Try the next endpoint.
-    connection_.socket().close();
-    boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
-    connection_.socket().async_connect(endpoint,
-      boost::bind(&FragmentController::ReceiveJobsOperation::handle_connect_calc, this,
-      boost::asio::placeholders::error, ++endpoint_iterator));
-  } else {
-    // An error occurred. Log it and return. Since we are not starting a new
-    // operation the io_service will run out of work to do and the client will
-    // exit.
-    Exitflag = ErrorFlag;
-    ELOG(1, e.message());
-  }
-}
-
-/** Callback function when an operation has been completed.
- *
- * \param e error code if something went wrong
- */
-void FragmentController::ReceiveJobsOperation::handle_FinishOperation(const boost::system::error_code& e)
-{
-  Info info(__FUNCTION__);
-
-  LOG(1, "INFO: Jobs have been sent. Clearing.");
-  jobs.clear();
-
-  Operation::handle_FinishOperation(e);
-}
-
-
-/** Handle connect operation to send number of done jobs.
- *
- * \param e error code if something went wrong
- * \param endpoint_iterator endpoint of the connection
- */
-void FragmentController::CheckResultsOperation::handle_connect_check(const boost::system::error_code& e,
-    boost::asio::ip::tcp::resolver::iterator endpoint_iterator)
-{
-  Info info(__FUNCTION__);
-  if (!e)
-  {
-    // Successfully established connection. Give choice.
-    enum ControllerChoices choice = CheckState;
-    connection_.async_write(choice,
-      boost::bind(&FragmentController::CheckResultsOperation::handle_ReceiveDoneJobs, this,
-      boost::asio::placeholders::error));
-  } else if (endpoint_iterator != boost::asio::ip::tcp::resolver::iterator()) {
-    // Try the next endpoint.
-    connection_.socket().close();
-    boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
-    connection_.socket().async_connect(endpoint,
-      boost::bind(&FragmentController::CheckResultsOperation::handle_connect_check, this,
-      boost::asio::placeholders::error, ++endpoint_iterator));
-  } else {
-    // An error occurred. Log it and return. Since we are not starting a new
-    // operation the io_service will run out of work to do and the client will
-    // exit.
-    Exitflag = ErrorFlag;
-    ELOG(1, e.message());
-  }
-}
-
-/** Handle connect operation to send results.
- *
- * \param e error code if something went wrong
- * \param endpoint_iterator endpoint of the connection
- */
-void FragmentController::SendResultsOperation::handle_connect_get(const boost::system::error_code& e,
-    boost::asio::ip::tcp::resolver::iterator endpoint_iterator)
-{
-  Info info(__FUNCTION__);
-  if (!e)
-  {
-    // Successfully established connection. Give choice.
-    enum ControllerChoices choice = SendResults;
-    connection_.async_write(choice,
-      boost::bind(&FragmentController::SendResultsOperation::handle_ReceivingResults, this,
-      boost::asio::placeholders::error));
-  } else if (endpoint_iterator != boost::asio::ip::tcp::resolver::iterator()) {
-    // Try the next endpoint.
-    connection_.socket().close();
-    boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
-    connection_.socket().async_connect(endpoint,
-      boost::bind(&FragmentController::SendResultsOperation::handle_connect_get, this,
-      boost::asio::placeholders::error, ++endpoint_iterator));
-  } else {
-    // An error occurred. Log it and return. Since we are not starting a new
-    // operation the io_service will run out of work to do and the client will
-    // exit.
-    Exitflag = ErrorFlag;
-    ELOG(1, e.message());
-  }
-}
-
-/** Handle connect operation to shutdown scheduler.
- *
- * \param e error code if something went wrong
- * \param endpoint_iterator endpoint of the connection
- */
-void FragmentController::ShutdownOperation::handle_connect_shutdown(const boost::system::error_code& e,
-    boost::asio::ip::tcp::resolver::iterator endpoint_iterator)
-{
-  Info info(__FUNCTION__);
-  if (!e)
-  {
-    // Successfully established connection. Give choice.
-    enum ControllerChoices choice = Shutdown;
-    connection_.async_write(choice,
-      boost::bind(&FragmentController::ShutdownOperation::handle_FinishOperation, this,
-      boost::asio::placeholders::error));
-  } else if (endpoint_iterator != boost::asio::ip::tcp::resolver::iterator()) {
-    // Try the next endpoint.
-    connection_.socket().close();
-    boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
-    connection_.socket().async_connect(endpoint,
-      boost::bind(&FragmentController::ShutdownOperation::handle_connect_shutdown, this,
-      boost::asio::placeholders::error, ++endpoint_iterator));
-  } else {
-    // An error occurred. Log it and return. Since we are not starting a new
-    // operation the io_service will run out of work to do and the client will
-    // exit.
-    Exitflag = ErrorFlag;
-    ELOG(1, e.message());
-  }
-}
-
-/** Callback function when jobs have been sent.
- *
- * \param e error code if something went wrong
- */
-void FragmentController::ReceiveJobsOperation::handle_SendJobs(const boost::system::error_code& e)
-{
-  Info info(__FUNCTION__);
-  if (!e)
-  {
-    // Successfully established connection. Start operation to read the vector
-    // of jobs. The connection::async_write() function will automatically
-    // encode the data that is written to the underlying socket.
-    LOG(1, "INFO: Sending "+toString(jobs.size())+" jobs ...");
-    connection_.async_write(jobs,
-      boost::bind(&ReceiveJobsOperation::handle_FinishOperation, this,
-      boost::asio::placeholders::error));
-  }
-  else
-  {
-    // An error occurred.
-    Exitflag = ErrorFlag;
-    ELOG(1, e.message());
-  }
-
-  // Since we are not starting a new operation the io_service will run out of
-  // work to do and the client will exit.
-}
-
-/** Callback function when results have been received.
- *
- * \param e error code if something went wrong
- */
-void FragmentController::SendResultsOperation::handle_ReceivingResults(const boost::system::error_code& e)
-{
-  Info info(__FUNCTION__);
-  if (!e)
-  {
-    // The connection::async_read() function will automatically
-    // decode the data that is written to the underlying socket.
-    connection_.async_read(results,
-      boost::bind(&FragmentController::SendResultsOperation::handle_ReceivedResults, this,
-      boost::asio::placeholders::error));
-  }
-  else
-  {
-    // An error occurred.
-    Exitflag = ErrorFlag;
-    ELOG(1, e.message());
-  }
-
-  // Since we are not starting a new operation the io_service will run out of
-  // work to do and the client will exit.
-}
-
-/** Callback function when doneJobs have been received.
- *
- * \param e error code if something went wrong
- */
-void FragmentController::SendResultsOperation::handle_ReceivedResults(const boost::system::error_code& e)
-{
-  Info info(__FUNCTION__);
-
-  LOG(1, "INFO: Received "+toString(results.size())+" results ...");
-
-  handle_FinishOperation(e);
-}
-
-/** Callback function when doneJobs have been received.
- *
- * \param e error code if something went wrong
- */
-void FragmentController::CheckResultsOperation::handle_ReceiveDoneJobs(const boost::system::error_code& e)
-{
-  Info info(__FUNCTION__);
-  if (!e)
-  {
-    // The connection::async_read() function will automatically
-    // decode the data that is written to the underlying socket.
-    LOG(1, "INFO: Checking number of done jobs ...");
-    connection_.async_read(doneJobs,
-      boost::bind(&Operation::handle_FinishOperation, this,
-      boost::asio::placeholders::error));
-  }
-  else
-  {
-    // An error occurred.
-    Exitflag = ErrorFlag;
-    ELOG(1, e.message());
-  }
-}
-
-/** Internal function to connect to the endpoint of the server asynchronuously.
- *
- * We require internal connetion_ and host and service to be set up for this.
- */
-void FragmentController::ReceiveJobsOperation::connect_calc()
-{
-  Info info(__FUNCTION__);
-  // Resolve the host name into an IP address.
-  boost::asio::ip::tcp::resolver::iterator endpoint_iterator = getEndpointIterator();
-  boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
-
-  // Start an asynchronous connect operation.
-  std::cout << "Connecting to endpoint " << endpoint << " to calc " << std::endl;
-  connection_.socket().async_connect(endpoint,
-    boost::bind(&FragmentController::ReceiveJobsOperation::handle_connect_calc, this,
-      boost::asio::placeholders::error, ++endpoint_iterator));
-}
-
-/** Internal function to connect to the endpoint of the server asynchronuously.
- *
- * We require internal connetion_ and host and service to be set up for this.
- */
-void FragmentController::CheckResultsOperation::connect_check()
-{
-  Info info(__FUNCTION__);
-  // Resolve the host name into an IP address.
-  boost::asio::ip::tcp::resolver::iterator endpoint_iterator = getEndpointIterator();
-  boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
-
-  // Start an asynchronous connect operation.
-  std::cout << "Connecting to endpoint " << endpoint << " to check " << std::endl;
-  connection_.socket().async_connect(endpoint,
-    boost::bind(&FragmentController::CheckResultsOperation::handle_connect_check, this,
-      boost::asio::placeholders::error, ++endpoint_iterator));
-}
-
-/** Internal function to connect to the endpoint of the server asynchronuously.
- *
- * We require internal connetion_ and host and service to be set up for this.
- */
-void FragmentController::SendResultsOperation::connect_get()
-{
-  Info info(__FUNCTION__);
-  // Resolve the host name into an IP address.
-  boost::asio::ip::tcp::resolver::iterator endpoint_iterator = getEndpointIterator();
-  boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
-
-  // Start an asynchronous connect operation.
-  std::cout << "Connecting to endpoint " << endpoint << " to get results " << std::endl;
-  connection_.socket().async_connect(endpoint,
-    boost::bind(&FragmentController::SendResultsOperation::handle_connect_get, this,
-      boost::asio::placeholders::error, ++endpoint_iterator));
-}
-
-/** Internal function to connect to the endpoint of the server asynchronuously.
- *
- * We require internal connetion_ and host and service to be set up for this.
- */
-void FragmentController::ShutdownOperation::connect_shutdown()
-{
-  Info info(__FUNCTION__);
-  // Resolve the host name into an IP address.
-  boost::asio::ip::tcp::resolver::iterator endpoint_iterator = getEndpointIterator();
-  boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
-
-  // Start an asynchronous connect operation.
-  std::cout << "Connecting to endpoint " << endpoint << " to get results " << std::endl;
-  connection_.socket().async_connect(endpoint,
-    boost::bind(&FragmentController::ShutdownOperation::handle_connect_shutdown, this,
-      boost::asio::placeholders::error, ++endpoint_iterator));
-}
-
-/** Place number of jobs into this controller.
- *
- * \param _jobs jobs to add
- */
-void FragmentController::ReceiveJobsOperation::addJobs(const std::vector<FragmentJob> &_jobs)
-{
-  jobs.reserve(jobs.size()+_jobs.size());
-  BOOST_FOREACH(FragmentJob job, _jobs) {
-    jobs.push_back(job);
-  }
-}
-
-/** Prepares the calculation of the results for the current jobs.
- */
-void FragmentController::ReceiveJobsOperation::operator()()
-{
-  Info info(__FUNCTION__);
-  // connect
-  connect_calc();
-  //disconnect
-  disconnect();
-}
-
-/** Prepares the calculation of the results for the current jobs.
- */
-void FragmentController::CheckResultsOperation::operator()()
-{
-  Info info(__FUNCTION__);
-  // connect
-  connect_check();
-  //disconnect
-  disconnect();
-}
-
-/** Getter for results.
- *
- * \return vector of results for the added jobs (\sa addJobs()).
- */
-std::vector<FragmentResult> FragmentController::SendResultsOperation::getResults()
-{
-  Info info(__FUNCTION__);
-  return results;
-}
-
-/** Function to initiate receival of results.
- *
- */
-void FragmentController::SendResultsOperation::operator()()
-{
-  // connect
-  connect_get();
-  //disconnect
-  disconnect();
-}
-
-/** Function to initiate shutdown of server.
- *
- */
-void FragmentController::ShutdownOperation::operator()()
-{
-  // connect
-  connect_shutdown();
-  //disconnect
-  disconnect();
-}
-
-/** Getter for doneJobs.
- *
- * \sa checkResults()
- * \param doneJobs
- */
-size_t FragmentController::CheckResultsOperation::getDoneJobs() const
-{
-  return doneJobs;
-}
-
-/** Getter for number of jobs present in the queue.
- *
- * \return jobs.size()
- */
-size_t FragmentController::ReceiveJobsOperation::getPresentJobs() const
-{
-  return jobs.size();
-}
Index: src/Fragmentation/Automation/Controller/FragmentController.hpp
===================================================================
--- src/Fragmentation/Automation/Controller/FragmentController.hpp	(revision 73d6fce636ade8bb851250adf52ad79adf5225a2)
+++ src/Fragmentation/Automation/Controller/FragmentController.hpp	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
@@ -23,4 +23,8 @@
 
 #include "Controller/Commands/Operation.hpp"
+#include "Controller/Commands/CheckResultsOperation.hpp"
+#include "Controller/Commands/ReceiveJobsOperation.hpp"
+#include "Controller/Commands/SendResultsOperation.hpp"
+#include "Controller/Commands/ShutdownOperation.hpp"
 
 /** The FragmentController sends bunches of jobs to a FragmentScheduler,
@@ -38,129 +42,4 @@
   FragmentController(boost::asio::io_service& io_service, const std::string& _host, const std::string& _service);
   ~FragmentController();
-
-  class ReceiveJobsOperation : public Operation {
-  public:
-    /// Constructor for class ReceiveJobsOperation.
-    ReceiveJobsOperation(Connection &_connection, const std::string& _host, const std::string& _service) :
-      Operation(_connection, _host, _service) {}
-    /// Destructor for class ReceiveJobsOperation
-    ~ReceiveJobsOperation() {}
-
-  public:
-    /// Placing receive jobs operations into an io_service
-    virtual void operator()();
-
-    /// Handle completion of a calculate operation.
-    void handle_connect_calc(const boost::system::error_code& e,
-        boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
-
-    /// Callback function when bunch of jobs have been sent.
-    void handle_SendJobs(const boost::system::error_code& e);
-
-    /// Handle completion of an operation.
-    void handle_FinishOperation(const boost::system::error_code& e);
-
-    /// internal function to connect to server and send jobs for calculation
-    void connect_calc();
-
-    /// Setter for jobs
-    void addJobs(const std::vector<FragmentJob> &jobs);
-
-    /// Getter for number of size of jobs
-    size_t getPresentJobs() const;
-
-  protected:
-    /// bunch of jobs
-    std::vector<FragmentJob> jobs;
-  };
-
-  struct CheckResultsOperation : public Operation  {
-  public:
-    /// Constructor for class CheckResultsOperation.
-    CheckResultsOperation(Connection &_connection, const std::string& _host, const std::string& _service) :
-      Operation(_connection, _host, _service),
-      doneJobs(0)
-    {}
-    /// Destructor for class CheckResultsOperation
-    ~CheckResultsOperation() {}
-
-  public:
-    // placing receive jobs operations into an io_service
-    virtual void operator()();
-
-    /// Handle completion of a CheckResults operation.
-    void handle_connect_check(const boost::system::error_code& e,
-        boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
-
-    /// Callback function when doneJobs have been received.
-    void handle_ReceiveDoneJobs(const boost::system::error_code& e);
-
-    /// Handle completion of an operation.
-    void handle_FinishOperation(const boost::system::error_code& e);
-
-    /// internal function to connect to server and check done jobs
-    void connect_check();
-
-    /// Getter for doneJobs
-    size_t getDoneJobs() const;
-
-  protected:
-    /// currently calculated results
-    size_t doneJobs;
-  };
-
-  struct SendResultsOperation : public Operation  {
-  public:
-    /// Constructor for class SendResultsOperation.
-    SendResultsOperation(Connection &_connection, const std::string& _host, const std::string& _service) :
-      Operation(_connection, _host, _service) {}
-    /// Destructor for class SendResultsOperation
-    ~SendResultsOperation() {}
-
-  public:
-    // placing receive jobs operations into an io_service
-    virtual void operator()();
-
-    /// Handle completion of a GetResults operation.
-    void handle_connect_get(const boost::system::error_code& e,
-        boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
-
-    /// Callback function when results are about to be received.
-    void handle_ReceivingResults(const boost::system::error_code& e);
-
-    /// Callback function when results have been received.
-    void handle_ReceivedResults(const boost::system::error_code& e);
-
-    /// internal function to connect to server and receive calculated results
-    void connect_get();
-
-    /// Getter for results
-    std::vector<FragmentResult> getResults();
-
-  protected:
-    /// bunch of results
-    std::vector<FragmentResult> results;
-  };
-
-  struct ShutdownOperation : public Operation  {
-  public:
-    /// Constructor for class ShutdownOperation.
-    ShutdownOperation(Connection &_connection, const std::string& _host, const std::string& _service) :
-      Operation(_connection, _host, _service) {}
-    /// Destructor for class ShutdownOperation
-    ~ShutdownOperation() {}
-
-  public:
-    // placing receive jobs operations into an io_service
-    virtual void operator()();
-
-    /// Handle completion of a Shutdown operation.
-    void handle_connect_shutdown(const boost::system::error_code& e,
-        boost::asio::ip::tcp::resolver::iterator endpoint_iterator);
-
-    /// internal function to connect to server and receive calculated results
-    void connect_shutdown();
-
-  };
 
 protected:
Index: src/Fragmentation/Automation/Makefile.am
===================================================================
--- src/Fragmentation/Automation/Makefile.am	(revision 73d6fce636ade8bb851250adf52ad79adf5225a2)
+++ src/Fragmentation/Automation/Makefile.am	(revision 167b63307c9c9cb05dd758fe1c2b80be02bdb4a2)
@@ -32,5 +32,9 @@
   atexit.cpp \
   Controller/FragmentController.cpp \
-  Controller/Commands/Operation.cpp
+  Controller/Commands/CheckResultsOperation.cpp \
+  Controller/Commands/Operation.cpp \
+  Controller/Commands/ReceiveJobsOperation.cpp \
+  Controller/Commands/SendResultsOperation.cpp \
+  Controller/Commands/ShutdownOperation.cpp
 
 FRAGMENTATIONAUTOMATIONHEADER = \
@@ -39,5 +43,9 @@
   ControllerChoices.hpp \
   Controller/FragmentController.hpp \
-  Controller/Commands/Operation.hpp
+  Controller/Commands/CheckResultsOperation.hpp \
+  Controller/Commands/Operation.hpp \
+  Controller/Commands/ReceiveJobsOperation.hpp \
+  Controller/Commands/SendResultsOperation.hpp \
+  Controller/Commands/ShutdownOperation.hpp
 
 noinst_LTLIBRARIES += libMolecuilderFragmentationAutomation.la
