Index: src/Fragmentation/Automation/Makefile.am
===================================================================
--- src/Fragmentation/Automation/Makefile.am	(revision 8b65727b83e15dcfd1ce88625b8a59af32e5baab)
+++ src/Fragmentation/Automation/Makefile.am	(revision 2eff32bc86b5a24a223754e4992ad808b3427255)
@@ -30,5 +30,7 @@
   client.cpp \
   connection.hpp \
-  stock.hpp
+  stock.hpp \
+  StockClient.cpp \
+  StockClient.hpp
 clients11n_LDFLAGS = $(AM_LDFLAGS) $(BOOST_ASIO_LDFLAGS) $(BOOST_SYSTEM_LDFLAGS) $(BOOST_THREAD_LDFLAGS) $(BOOST_SERIALIZATION_LDFLAGS)
 clients11n_CXXFLAGS = $(AM_CPPFLAGS)
Index: src/Fragmentation/Automation/StockClient.cpp
===================================================================
--- src/Fragmentation/Automation/StockClient.cpp	(revision 2eff32bc86b5a24a223754e4992ad808b3427255)
+++ src/Fragmentation/Automation/StockClient.cpp	(revision 2eff32bc86b5a24a223754e4992ad808b3427255)
@@ -0,0 +1,91 @@
+/*
+ * StockClient.cpp
+ *
+ *  Created on: Nov 18, 2011
+ *      Author: heber
+ */
+
+#include <boost/asio.hpp>
+#include <boost/bind.hpp>
+#include <iostream>
+#include <vector>
+#include "connection.hpp" // Must come before boost/serialization headers.
+#include <boost/serialization/vector.hpp>
+#include "stock.hpp"
+#include "StockClient.hpp"
+
+namespace s11n_example {
+
+  /// Constructor starts the asynchronous connect operation.
+  StockClient::StockClient(
+      boost::asio::io_service& io_service,
+      const std::string& host,
+      const std::string& service) :
+    connection_(io_service)
+  {
+    // Resolve the host name into an IP address.
+    boost::asio::ip::tcp::resolver resolver(io_service);
+    boost::asio::ip::tcp::resolver::query query(host, service);
+    boost::asio::ip::tcp::resolver::iterator endpoint_iterator =
+      resolver.resolve(query);
+    boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
+
+    // Start an asynchronous connect operation.
+    connection_.socket().async_connect(endpoint,
+      boost::bind(&StockClient::handle_connect, this,
+        boost::asio::placeholders::error));
+  }
+
+  /// Handle completion of a connect operation.
+  void StockClient::handle_connect(const boost::system::error_code& e)
+  {
+    if (!e)
+    {
+      // Successfully established connection. Start operation to read the list
+      // of stocks. The connection::async_read() function will automatically
+      // decode the data that is read from the underlying socket.
+      connection_.async_read(stocks_,
+        boost::bind(&StockClient::handle_read, this,
+        boost::asio::placeholders::error));
+    }
+    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.
+      std::cerr << e.message() << std::endl;
+    }
+  }
+
+  /// Handle completion of a read operation.
+  void StockClient::handle_read(const boost::system::error_code& e)
+  {
+    if (!e)
+    {
+      // Print out the data that was received.
+      for (std::size_t i = 0; i < stocks_.size(); ++i)
+      {
+      std::cout << "Stock number " << i << "\n";
+      std::cout << "  code: " << stocks_[i].code << "\n";
+      std::cout << "  name: " << stocks_[i].name << "\n";
+      std::cout << "  open_price: " << stocks_[i].open_price << "\n";
+      std::cout << "  high_price: " << stocks_[i].high_price << "\n";
+      std::cout << "  low_price: " << stocks_[i].low_price << "\n";
+      std::cout << "  last_price: " << stocks_[i].last_price << "\n";
+      std::cout << "  buy_price: " << stocks_[i].buy_price << "\n";
+      std::cout << "  buy_quantity: " << stocks_[i].buy_quantity << "\n";
+      std::cout << "  sell_price: " << stocks_[i].sell_price << "\n";
+      std::cout << "  sell_quantity: " << stocks_[i].sell_quantity << "\n";
+      }
+    }
+    else
+    {
+      // An error occurred.
+      std::cerr << e.message() << std::endl;
+    }
+
+    // Since we are not starting a new operation the io_service will run out of
+    // work to do and the client will exit.
+  }
+
+} // namespace s11n_example
Index: src/Fragmentation/Automation/StockClient.hpp
===================================================================
--- src/Fragmentation/Automation/StockClient.hpp	(revision 2eff32bc86b5a24a223754e4992ad808b3427255)
+++ src/Fragmentation/Automation/StockClient.hpp	(revision 2eff32bc86b5a24a223754e4992ad808b3427255)
@@ -0,0 +1,41 @@
+/*
+ * StockClient.hpp
+ *
+ *  Created on: Nov 18, 2011
+ *      Author: heber
+ */
+
+#ifndef STOCKCLIENT_HPP_
+#define STOCKCLIENT_HPP_
+
+#include <boost/asio.hpp>
+#include <iostream>
+#include "connection.hpp" // Must come before boost/serialization headers.
+#include "stock.hpp"
+
+namespace s11n_example {
+
+/// Downloads stock quote information from a server.
+class StockClient
+{
+public:
+  /// Constructor starts the asynchronous connect operation.
+  StockClient(boost::asio::io_service& io_service,
+      const std::string& host, const std::string& service);
+  /// Handle completion of a connect operation.
+  void handle_connect(const boost::system::error_code& e);
+
+  /// Handle completion of a read operation.
+  void handle_read(const boost::system::error_code& e);
+
+private:
+  /// The connection to the server.
+  connection connection_;
+
+  /// The data received from the server.
+  std::vector<stock> stocks_;
+};
+
+} // namespace s11n_example
+
+#endif /* STOCKCLIENT_HPP_ */
Index: src/Fragmentation/Automation/client.cpp
===================================================================
--- src/Fragmentation/Automation/client.cpp	(revision 8b65727b83e15dcfd1ce88625b8a59af32e5baab)
+++ src/Fragmentation/Automation/client.cpp	(revision 2eff32bc86b5a24a223754e4992ad808b3427255)
@@ -10,96 +10,7 @@
 
 #include <boost/asio.hpp>
-#include <boost/bind.hpp>
 #include <iostream>
-#include <vector>
-#include "connection.hpp" // Must come before boost/serialization headers.
-#include <boost/serialization/vector.hpp>
-#include "stock.hpp"
+#include "StockClient.hpp"
 
-namespace s11n_example {
-
-/// Downloads stock quote information from a server.
-class client
-{
-public:
-  /// Constructor starts the asynchronous connect operation.
-  client(boost::asio::io_service& io_service,
-      const std::string& host, const std::string& service)
-    : connection_(io_service)
-  {
-    // Resolve the host name into an IP address.
-    boost::asio::ip::tcp::resolver resolver(io_service);
-    boost::asio::ip::tcp::resolver::query query(host, service);
-    boost::asio::ip::tcp::resolver::iterator endpoint_iterator =
-      resolver.resolve(query);
-    boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
-
-    // Start an asynchronous connect operation.
-    connection_.socket().async_connect(endpoint,
-        boost::bind(&client::handle_connect, this,
-          boost::asio::placeholders::error));
-  }
-
-  /// Handle completion of a connect operation.
-  void handle_connect(const boost::system::error_code& e)
-  {
-    if (!e)
-    {
-      // Successfully established connection. Start operation to read the list
-      // of stocks. The connection::async_read() function will automatically
-      // decode the data that is read from the underlying socket.
-      connection_.async_read(stocks_,
-          boost::bind(&client::handle_read, this,
-            boost::asio::placeholders::error));
-    }
-    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.
-      std::cerr << e.message() << std::endl;
-    }
-  }
-
-  /// Handle completion of a read operation.
-  void handle_read(const boost::system::error_code& e)
-  {
-    if (!e)
-    {
-      // Print out the data that was received.
-      for (std::size_t i = 0; i < stocks_.size(); ++i)
-      {
-        std::cout << "Stock number " << i << "\n";
-        std::cout << "  code: " << stocks_[i].code << "\n";
-        std::cout << "  name: " << stocks_[i].name << "\n";
-        std::cout << "  open_price: " << stocks_[i].open_price << "\n";
-        std::cout << "  high_price: " << stocks_[i].high_price << "\n";
-        std::cout << "  low_price: " << stocks_[i].low_price << "\n";
-        std::cout << "  last_price: " << stocks_[i].last_price << "\n";
-        std::cout << "  buy_price: " << stocks_[i].buy_price << "\n";
-        std::cout << "  buy_quantity: " << stocks_[i].buy_quantity << "\n";
-        std::cout << "  sell_price: " << stocks_[i].sell_price << "\n";
-        std::cout << "  sell_quantity: " << stocks_[i].sell_quantity << "\n";
-      }
-    }
-    else
-    {
-      // An error occurred.
-      std::cerr << e.message() << std::endl;
-    }
-
-    // Since we are not starting a new operation the io_service will run out of
-    // work to do and the client will exit.
-  }
-
-private:
-  /// The connection to the server.
-  connection connection_;
-
-  /// The data received from the server.
-  std::vector<stock> stocks_;
-};
-
-} // namespace s11n_example
 
 int main(int argc, char* argv[])
@@ -115,5 +26,5 @@
 
     boost::asio::io_service io_service;
-    s11n_example::client client(io_service, argv[1], argv[2]);
+    s11n_example::StockClient client(io_service, argv[1], argv[2]);
     io_service.run();
   }
Index: tests/CodeChecks/testsuite-config_h.at
===================================================================
--- tests/CodeChecks/testsuite-config_h.at	(revision 8b65727b83e15dcfd1ce88625b8a59af32e5baab)
+++ tests/CodeChecks/testsuite-config_h.at	(revision 2eff32bc86b5a24a223754e4992ad808b3427255)
@@ -1,5 +1,5 @@
 AT_SETUP([Checking for present config.h include])
 AT_KEYWORDS([CodeCheck config_h])
-ok="unity.cpp AllActionHeaders.hpp AllActionPython.hpp pugiconfig.hpp pugixml.cpp pugixml.hpp StockServer.cpp StockServer.hpp client.cpp connection.hpp server.cpp stock.hpp"
+ok="unity.cpp AllActionHeaders.hpp AllActionPython.hpp pugiconfig.hpp pugixml.cpp pugixml.hpp StockServer.cpp StockServer.hpp StockClient.cpp StockClient.hpp connection.hpp client.cpp server.cpp stock.hpp"
 echo `pwd`
 echo "${#ok[*]} are ok to not contain config.h: ${ok[*]}."
Index: tests/CodeChecks/testsuite-memdebug.at
===================================================================
--- tests/CodeChecks/testsuite-memdebug.at	(revision 8b65727b83e15dcfd1ce88625b8a59af32e5baab)
+++ tests/CodeChecks/testsuite-memdebug.at	(revision 2eff32bc86b5a24a223754e4992ad808b3427255)
@@ -1,5 +1,5 @@
 AT_SETUP([Checking for present MemDebug.hpp include])
 AT_KEYWORDS([CodeCheck MemDebug])
-ok="builder.cpp MemDebug.cpp SubspaceFactorizer.cpp TestRunner.cpp unity.cpp pugixml.cpp StockServer.cpp client.cpp server.cpp"
+ok="builder.cpp MemDebug.cpp SubspaceFactorizer.cpp TestRunner.cpp unity.cpp pugixml.cpp StockServer.cpp StockClient.cpp client.cpp server.cpp"
 echo `pwd`
 echo "${#ok[*]} are ok to not contain MemDebug.hpp: ${ok[0]} ${ok[1]}."
Index: tests/CodeChecks/testsuite-project-disclaimer.at
===================================================================
--- tests/CodeChecks/testsuite-project-disclaimer.at	(revision 8b65727b83e15dcfd1ce88625b8a59af32e5baab)
+++ tests/CodeChecks/testsuite-project-disclaimer.at	(revision 2eff32bc86b5a24a223754e4992ad808b3427255)
@@ -1,5 +1,5 @@
 AT_SETUP([Checking for present project disclaimer])
 AT_KEYWORDS([CodeCheck disclaimer])
-ok="unity.cpp pugixml.cpp StockServer.cpp client.cpp server.cpp"
+ok="unity.cpp pugixml.cpp StockServer.cpp StockClient.cpp client.cpp server.cpp"
 echo `pwd`
 echo "${#ok[*]} are ok to not contain config.h: ${ok[*]}."
