diff -ur a/common/build/pion-boost.inc b/common/build/pion-boost.inc
--- a/common/build/pion-boost.inc	2012-08-16 13:08:06.000000000 -0500
+++ b/common/build/pion-boost.inc	2012-12-29 07:22:39.222039906 -0600
@@ -5,7 +5,7 @@
 # Check for Boost
 AX_BOOST_BASE([1.35])
 # AC_MSG_NOTICE(Boost home directory: $BOOST_HOME_DIR)
-CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS -DBOOST_FILESYSTEM_VERSION=2"
+CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS -DBOOST_FILESYSTEM_VERSION=3"
 LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
 
 # Check for Boost library extension
@@ -51,42 +51,40 @@
 LIBS="$LIBS_SAVED"
 AC_SUBST(BOOST_DATE_TIME_LIB)
 
-
-# Check for Boost Thread library
-BOOST_TRY_LIB=thread
+# Check for Boost System library
+BOOST_TRY_LIB=system
 BOOST_TRY_LINK="boost_${BOOST_TRY_LIB}${BOOST_LIB_EXTENSION}"
 LIBS_SAVED="$LIBS"
-LIBS="$LIBS_SAVED -l${BOOST_TRY_LINK} ${BOOST_DATE_TIME_LIB}"
+LIBS="$LIBS_SAVED -l${BOOST_TRY_LINK}"
 AC_MSG_CHECKING([for boost::${BOOST_TRY_LIB} library])
-AC_TRY_LINK([#include <boost/thread/thread.hpp>
-	#include <boost/thread/condition.hpp>],
-	[ boost::thread current_thread; return 0; ],
+AC_TRY_LINK([#include <boost/system/error_code.hpp>],
+	[ boost::system::error_code error_code; std::string message(error_code.message()); return 0; ],
 	[ AC_MSG_RESULT(ok)
-	  BOOST_THREAD_LIB="-l${BOOST_TRY_LINK}"
+	  BOOST_SYSTEM_LIB="-l${BOOST_TRY_LINK}"
 	],
 	[ AC_MSG_RESULT(not found)
 	  AC_MSG_ERROR(Unable to link with the boost::${BOOST_TRY_LIB} library)
 	])
 LIBS="$LIBS_SAVED"
-AC_SUBST(BOOST_THREAD_LIB)
-
+AC_SUBST(BOOST_SYSTEM_LIB)
 
-# Check for Boost System library
-BOOST_TRY_LIB=system
+# Check for Boost Thread library
+BOOST_TRY_LIB=thread
 BOOST_TRY_LINK="boost_${BOOST_TRY_LIB}${BOOST_LIB_EXTENSION}"
 LIBS_SAVED="$LIBS"
-LIBS="$LIBS_SAVED -l${BOOST_TRY_LINK}"
+LIBS="$LIBS_SAVED $BOOST_SYSTEM_LIB -l${BOOST_TRY_LINK}"
 AC_MSG_CHECKING([for boost::${BOOST_TRY_LIB} library])
-AC_TRY_LINK([#include <boost/system/error_code.hpp>],
-	[ boost::system::error_code error_code; std::string message(error_code.message()); return 0; ],
+AC_TRY_LINK([#include <boost/thread/thread.hpp>
+	#include <boost/thread/condition.hpp>],
+	[ boost::thread current_thread; return 0; ],
 	[ AC_MSG_RESULT(ok)
-	  BOOST_SYSTEM_LIB="-l${BOOST_TRY_LINK}"
+	  BOOST_THREAD_LIB="-l${BOOST_TRY_LINK}"
 	],
 	[ AC_MSG_RESULT(not found)
 	  AC_MSG_ERROR(Unable to link with the boost::${BOOST_TRY_LIB} library)
 	])
 LIBS="$LIBS_SAVED"
-AC_SUBST(BOOST_SYSTEM_LIB)
+AC_SUBST(BOOST_THREAD_LIB)
 
 
 # Check for Boost Filesystem library
diff -ur a/common/include/pion/PluginManager.hpp b/common/include/pion/PluginManager.hpp
--- a/common/include/pion/PluginManager.hpp	2012-08-16 13:08:06.000000000 -0500
+++ b/common/include/pion/PluginManager.hpp	2012-12-29 07:22:39.224039906 -0600
@@ -420,7 +420,7 @@
 				delete i->second.first;
 			}
 		}
-		erase(std::map<std::string, std::pair<PLUGIN_TYPE *, PionPluginPtr<PLUGIN_TYPE> > >::begin(),
+		this->erase(std::map<std::string, std::pair<PLUGIN_TYPE *, PionPluginPtr<PLUGIN_TYPE> > >::begin(),
 			  std::map<std::string, std::pair<PLUGIN_TYPE *, PionPluginPtr<PLUGIN_TYPE> > >::end());
 	}
 }
diff -ur a/common/src/PionPlugin.cpp b/common/src/PionPlugin.cpp
--- a/common/src/PionPlugin.cpp	2012-08-16 13:08:06.000000000 -0500
+++ b/common/src/PionPlugin.cpp	2012-12-29 07:22:45.638039669 -0600
@@ -58,7 +58,7 @@
 	if (! boost::filesystem::exists(plugin_path) )
 		throw DirectoryNotFoundException(dir);
 	boost::mutex::scoped_lock plugin_lock(m_plugin_mutex);
-	m_plugin_dirs.push_back(plugin_path.directory_string());
+	m_plugin_dirs.push_back(plugin_path.string());
 }
 
 void PionPlugin::resetPluginDirectories(void)
@@ -204,7 +204,7 @@
 	try {
 		// is_regular may throw if directory is not readable
 		if (boost::filesystem::is_regular(test_path)) {
-			final_path = test_path.file_string();
+			final_path = test_path.string();
 			return true;
 		}
 	} catch (...) {}
@@ -225,7 +225,7 @@
 	try {
 		// is_regular may throw if directory is not readable
 		if (boost::filesystem::is_regular(test_path)) {
-			final_path = test_path.file_string();
+			final_path = test_path.string();
 			return true;
 		}
 	} catch (...) {}
@@ -291,7 +291,7 @@
 		for (boost::filesystem::directory_iterator it2(*it); it2 != end; ++it2) {
 			if (boost::filesystem::is_regular(*it2)) {
 				if (boost::filesystem::extension(it2->path()) == PionPlugin::PION_PLUGIN_EXTENSION) {
-					plugin_names.push_back(PionPlugin::getPluginName(it2->path().leaf()));
+					plugin_names.push_back(PionPlugin::getPluginName(it2->path().filename().native()));
 				}
 			}
 		}
@@ -309,11 +309,11 @@
 #else
 	// convert into a full/absolute/complete path since dlopen()
 	// does not always search the CWD on some operating systems
-	const boost::filesystem::path full_path = boost::filesystem::complete(plugin_file);
+	const boost::filesystem::path full_path = boost::filesystem::absolute(plugin_file);
 	// NOTE: you must load shared libraries using RTLD_GLOBAL on Unix platforms
 	// due to a bug in GCC (or Boost::any, depending on which crowd you want to believe).
 	// see: http://svn.boost.org/trac/boost/ticket/754
-	return dlopen(full_path.file_string().c_str(), RTLD_LAZY | RTLD_GLOBAL);
+	return dlopen(full_path.string().c_str(), RTLD_LAZY | RTLD_GLOBAL);
 #endif
 }
 
diff -ur a/common/src/PionScheduler.cpp b/common/src/PionScheduler.cpp
--- a/common/src/PionScheduler.cpp	2012-08-16 13:08:06.000000000 -0500
+++ b/common/src/PionScheduler.cpp	2012-12-29 07:26:14.226031992 -0600
@@ -102,7 +102,7 @@
 										  boost::uint32_t sleep_nsec)
 {
 	boost::xtime wakeup_time;
-	boost::xtime_get(&wakeup_time, boost::TIME_UTC);
+	boost::xtime_get(&wakeup_time, boost::TIME_UTC_);
 	wakeup_time.sec += sleep_sec;
 	wakeup_time.nsec += sleep_nsec;
 	if (static_cast<boost::uint32_t>(wakeup_time.nsec) >= NSEC_IN_SECOND) {
diff -ur a/common/tests/PionPluginPtrTests.cpp b/common/tests/PionPluginPtrTests.cpp
--- a/common/tests/PionPluginPtrTests.cpp	2012-08-16 13:08:06.000000000 -0500
+++ b/common/tests/PionPluginPtrTests.cpp	2012-12-29 07:22:45.640039669 -0600
@@ -230,7 +230,7 @@
 class Sandbox_F {
 public:
 	Sandbox_F() {
-		m_cwd = boost::filesystem::current_path().directory_string();
+		m_cwd = boost::filesystem::current_path().string();
 		boost::filesystem::remove_all("sandbox");
 		BOOST_REQUIRE(boost::filesystem::create_directory("sandbox"));
 		BOOST_REQUIRE(boost::filesystem::create_directory("sandbox/dir1"));
diff -ur a/Makefile.am b/Makefile.am
--- a/Makefile.am	2012-08-16 13:08:06.000000000 -0500
+++ b/Makefile.am	2012-12-29 07:22:39.226039905 -0600
@@ -2,7 +2,7 @@
 # pion-net automake configuration file 
 # ------------------------------------
 
-ACLOCAL_AMFLAGS = -I @PION_COMMON_HOME@/build
+ACLOCAL_AMFLAGS = -I common/build
 
 SUBDIRS = @PION_COMMON_MAKEDIRS@ include src services utils @PION_TESTS_MAKEDIRS@
 
diff -ur a/services/FileService.cpp b/services/FileService.cpp
--- a/services/FileService.cpp	2012-08-16 13:08:06.000000000 -0500
+++ b/services/FileService.cpp	2012-12-29 07:22:45.641039669 -0600
@@ -137,8 +137,8 @@
 
 	// make sure that the requested file is within the configured directory
 	file_path.normalize();
-	std::string file_string = file_path.file_string();
-	if (file_string.find(m_directory.directory_string()) != 0) {
+	std::string file_string = file_path.string();
+	if (file_string.find(m_directory.string()) != 0) {
 		PION_LOG_WARN(m_logger, "Request for file outside of directory ("
 					  << getResource() << "): " << relative_path);
 		static const std::string FORBIDDEN_HTML_START =
@@ -319,7 +319,7 @@
 						   << getResource() << "): " << relative_path);
 
 			// determine the MIME type
-			response_file.setMimeType(findMIMEType( response_file.getFilePath().leaf() ));
+			response_file.setMimeType(findMIMEType( response_file.getFilePath().filename().native() ));
 
 			// get the file_size and last_modified timestamp
 			response_file.update();
@@ -597,7 +597,7 @@
 void FileService::scanDirectory(const boost::filesystem::path& dir_path)
 {
 	PION_LOG_DEBUG(m_logger, "Scanning directory (" << getResource() << "): "
-				   << dir_path.directory_string());
+				   << dir_path.string());
 
 	// iterate through items in the directory
 	boost::filesystem::directory_iterator end_itr;
@@ -614,8 +614,8 @@
 			// item is a regular file
 
 			// figure out relative path to the file
-			std::string file_path_string( itr->path().file_string() );
-			std::string relative_path( file_path_string.substr(m_directory.directory_string().size() + 1) );
+			std::string file_path_string( itr->path().string() );
+			std::string relative_path( file_path_string.substr(m_directory.string().size() + 1) );
 
 			// add item to cache (use placeholder if scan == 1)
 			addCacheEntry(relative_path, *itr, m_scan_setting == 1);
@@ -628,7 +628,7 @@
 						   const boost::filesystem::path& file_path,
 						   const bool placeholder)
 {
-	DiskFile cache_entry(file_path, NULL, 0, 0, findMIMEType(file_path.leaf()));
+	DiskFile cache_entry(file_path, NULL, 0, 0, findMIMEType(file_path.filename().native()));
 	if (! placeholder) {
 		cache_entry.update();
 		// only read the file if its size is <= max_cache_size
@@ -636,7 +636,7 @@
 			try { cache_entry.read(); }
 			catch (std::exception&) {
 				PION_LOG_ERROR(m_logger, "Unable to add file to cache: "
-							   << file_path.file_string());
+							   << file_path.string());
 				return std::make_pair(m_cache_map.end(), false);
 			}
 		}
@@ -647,10 +647,10 @@
 
 	if (add_entry_result.second) {
 		PION_LOG_DEBUG(m_logger, "Added file to cache: "
-					   << file_path.file_string());
+					   << file_path.string());
 	} else {
 		PION_LOG_ERROR(m_logger, "Unable to insert cache entry for file: "
-					   << file_path.file_string());
+					   << file_path.string());
 	}
 
 	return add_entry_result;
@@ -713,7 +713,7 @@
 
 	// read the file into memory
 	if (!file_stream.is_open() || !file_stream.read(m_file_content.get(), m_file_size))
-		throw FileService::FileReadException(m_file_path.file_string());
+		throw FileService::FileReadException(m_file_path.string());
 }
 
 bool DiskFile::checkUpdated(void)
@@ -751,7 +751,7 @@
 {
 	PION_LOG_DEBUG(m_logger, "Preparing to send file"
 				   << (m_disk_file.hasFileContent() ? " (cached): " : ": ")
-				   << m_disk_file.getFilePath().file_string());
+				   << m_disk_file.getFilePath().string());
 
 		// set the Content-Type HTTP header using the file's MIME type
 	m_writer->getResponse().setContentType(m_disk_file.getMimeType());
@@ -795,7 +795,7 @@
 			m_file_stream.open(m_disk_file.getFilePath(), std::ios::in | std::ios::binary);
 			if (! m_file_stream.is_open()) {
 				PION_LOG_ERROR(m_logger, "Unable to open file: "
-							   << m_disk_file.getFilePath().file_string());
+							   << m_disk_file.getFilePath().string());
 				return;
 			}
 		}
@@ -811,10 +811,10 @@
 		if (! m_file_stream.read(m_content_buf.get(), m_file_bytes_to_send)) {
 			if (m_file_stream.gcount() > 0) {
 				PION_LOG_ERROR(m_logger, "File size inconsistency: "
-							   << m_disk_file.getFilePath().file_string());
+							   << m_disk_file.getFilePath().string());
 			} else {
 				PION_LOG_ERROR(m_logger, "Unable to read file: "
-							   << m_disk_file.getFilePath().file_string());
+							   << m_disk_file.getFilePath().string());
 			}
 			return;
 		}
