From b61486fefe602e0d18fa5279021006f87b965307 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Sun, 28 Mar 2010 15:40:14 +0200
Subject: Moved Swiften to a separate module.


diff --git a/.gitmodules b/.gitmodules
index 60dfb9e..a61dcea 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -31,3 +31,6 @@
 [submodule "BuildTools"]
 	path = BuildTools
 	url = swift@swift.im:git/buildtools-module.git
+[submodule "Swiften"]
+	path = Swiften
+	url = swift@swift.im:git/swiften-module.git
diff --git a/Swiften b/Swiften
new file mode 160000
index 0000000..8213ba1
--- /dev/null
+++ b/Swiften
@@ -0,0 +1 @@
+Subproject commit 8213ba16d0043d2461f4b031c881d61dda5a38c8
diff --git a/Swiften/Application/Application.cpp b/Swiften/Application/Application.cpp
deleted file mode 100644
index be77e95..0000000
--- a/Swiften/Application/Application.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "Swiften/Application/Application.h"
-
-#include <boost/filesystem.hpp>
-#include <stdlib.h>
-
-#include "Swiften/Application/ApplicationMessageDisplay.h"
-
-namespace Swift {
-
-Application::Application(const String& name) : name_(name) {
-}
-
-Application::~Application() {
-}
-
-boost::filesystem::path Application::getSettingsFileName() const {
-	return getSettingsDir() / "settings";
-}
-
-boost::filesystem::path Application::getAvatarDir() const {
-	return getSettingsDir() / "avatars";
-}
-
-boost::filesystem::path Application::getProfileDir(const String& profile) const {
-	boost::filesystem::path result(getHomeDir() / profile.getUTF8String());
-	boost::filesystem::create_directory(result);
-	return result;
-}
-
-}
diff --git a/Swiften/Application/Application.h b/Swiften/Application/Application.h
deleted file mode 100644
index 20d686c..0000000
--- a/Swiften/Application/Application.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef SWIFTEN_Application_H
-#define SWIFTEN_Application_H
-
-#include <boost/filesystem.hpp>
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class ApplicationMessageDisplay;
-
-	class Application {
-		public:	
-			Application(const String& name);
-			virtual ~Application();
-
-			boost::filesystem::path getSettingsFileName() const;
-			boost::filesystem::path getAvatarDir() const;
-			virtual boost::filesystem::path getHomeDir() const = 0;
-			virtual boost::filesystem::path getSettingsDir() const = 0;
-			boost::filesystem::path getProfileDir(const String& profile) const;
-
-			const String& getName() const {
-				return name_;
-			}
-
-			virtual ApplicationMessageDisplay* getApplicationMessageDisplay() = 0;
-
-		private:
-			String name_;
-	};
-}
-
-#endif
diff --git a/Swiften/Application/ApplicationMessageDisplay.cpp b/Swiften/Application/ApplicationMessageDisplay.cpp
deleted file mode 100644
index 48db37d..0000000
--- a/Swiften/Application/ApplicationMessageDisplay.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Application/ApplicationMessageDisplay.h"
-
-namespace Swift {
-
-ApplicationMessageDisplay::~ApplicationMessageDisplay() {
-}
-
-}
diff --git a/Swiften/Application/ApplicationMessageDisplay.h b/Swiften/Application/ApplicationMessageDisplay.h
deleted file mode 100644
index df7f0cb..0000000
--- a/Swiften/Application/ApplicationMessageDisplay.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef SWIFTEN_ApplicationMessageDisplay_H
-#define SWIFTEN_ApplicationMessageDisplay_H
-
-namespace Swift {
-	class String;
-
-	class ApplicationMessageDisplay {
-		public:
-			virtual ~ApplicationMessageDisplay();
-
-			virtual void setMessage(const String& message) = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Application/MacOSX/MacOSXApplication.cpp b/Swiften/Application/MacOSX/MacOSXApplication.cpp
deleted file mode 100644
index 79d7586..0000000
--- a/Swiften/Application/MacOSX/MacOSXApplication.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "Swiften/Application/MacOSX/MacOSXApplication.h"
-
-namespace Swift {
-
-MacOSXApplication::MacOSXApplication(const String& name) : Application(name) {
-}
-
-ApplicationMessageDisplay* MacOSXApplication::getApplicationMessageDisplay() {
-	return &messageDisplay_;
-}
-
-boost::filesystem::path MacOSXApplication::getSettingsDir() const {
-	boost::filesystem::path result(getHomeDir() / "Library/Application Support" / getName().getUTF8String());
-	boost::filesystem::create_directory(result);
-	return result;
-}
-
-boost::filesystem::path MacOSXApplication::getHomeDir() const {
-	return boost::filesystem::path(getenv("HOME"));
-}
-
-}
diff --git a/Swiften/Application/MacOSX/MacOSXApplication.h b/Swiften/Application/MacOSX/MacOSXApplication.h
deleted file mode 100644
index cd5e69f..0000000
--- a/Swiften/Application/MacOSX/MacOSXApplication.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef SWIFTEN_MacOSXApplication_H
-#define SWIFTEN_MacOSXApplication_H
-
-#include "Swiften/Application/Application.h"
-#include "Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.h"
-#include "Swiften/Application/MacOSX/MacOSXApplicationInitializer.h"
-
-namespace Swift {
-	class ApplicationMessageDisplay;
-
-	class MacOSXApplication : public Application {
-		public:
-			MacOSXApplication(const String& name);
-
-			virtual boost::filesystem::path getHomeDir() const;
-			virtual ApplicationMessageDisplay* getApplicationMessageDisplay();
-			boost::filesystem::path getSettingsDir() const;
-
-		private:
-			MacOSXApplicationInitializer initializer_;
-			MacOSXApplicationMessageDisplay messageDisplay_;
-	};
-}
-
-#endif
diff --git a/Swiften/Application/MacOSX/MacOSXApplicationInitializer.h b/Swiften/Application/MacOSX/MacOSXApplicationInitializer.h
deleted file mode 100644
index db551eb..0000000
--- a/Swiften/Application/MacOSX/MacOSXApplicationInitializer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_MacOSXApplicationInitializer_H
-#define SWIFTEN_MacOSXApplicationInitializer_H
-
-namespace Swift {
-	class MacOSXApplicationInitializer {
-		public:
-			MacOSXApplicationInitializer();
-			~MacOSXApplicationInitializer();
-
-		private:
-			class Private;
-			Private* d;
-	};
-}
-
-#endif
diff --git a/Swiften/Application/MacOSX/MacOSXApplicationInitializer.mm b/Swiften/Application/MacOSX/MacOSXApplicationInitializer.mm
deleted file mode 100644
index e401697..0000000
--- a/Swiften/Application/MacOSX/MacOSXApplicationInitializer.mm
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "Swiften/Application/MacOSX/MacOSXApplicationInitializer.h"
-
-#include <AppKit/AppKit.h>
-#include <Cocoa/Cocoa.h>
-
-namespace Swift {
-
-class MacOSXApplicationInitializer::Private {
-	public:
-		NSAutoreleasePool* autoReleasePool_;
-};
-
-MacOSXApplicationInitializer::MacOSXApplicationInitializer() {
-	d = new MacOSXApplicationInitializer::Private();
-	NSApplicationLoad();
-	d->autoReleasePool_ = [[NSAutoreleasePool alloc] init];
-}
-
-MacOSXApplicationInitializer::~MacOSXApplicationInitializer() {
-	[d->autoReleasePool_ release];
-	delete d;
-}
-
-}
diff --git a/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.h b/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.h
deleted file mode 100644
index 98af1fa..0000000
--- a/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef SWIFTEN_MacOSXApplicationMessageDisplay_H
-#define SWIFTEN_MacOSXApplicationMessageDisplay_H
-
-#include "Swiften/Application/ApplicationMessageDisplay.h"
-
-namespace Swift {
-	class String;
-
-	class MacOSXApplicationMessageDisplay : public ApplicationMessageDisplay {
-		public:
-			MacOSXApplicationMessageDisplay();
-
-			void setMessage(const String& label);
-	};
-}
-
-#endif
diff --git a/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.mm b/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.mm
deleted file mode 100644
index c10c707..0000000
--- a/Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.mm
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "Swiften/Application/MacOSX/MacOSXApplicationMessageDisplay.h"
-
-#include <AppKit/AppKit.h>
-#include <Cocoa/Cocoa.h>
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-
-MacOSXApplicationMessageDisplay::MacOSXApplicationMessageDisplay() {
-}
-
-void MacOSXApplicationMessageDisplay::setMessage(const String& label) {
-	NSString *labelString = [[NSString alloc] initWithUTF8String: label.getUTF8Data()];
-	[[NSApp dockTile] setBadgeLabel: labelString];
-	[labelString release];
-	[NSApp requestUserAttention: NSInformationalRequest];
-}
-
-}
diff --git a/Swiften/Application/NullApplicationMessageDisplay.h b/Swiften/Application/NullApplicationMessageDisplay.h
deleted file mode 100644
index 03e0b42..0000000
--- a/Swiften/Application/NullApplicationMessageDisplay.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_NullApplicationMessageDisplay_H
-#define SWIFTEN_NullApplicationMessageDisplay_H
-
-#include "Swiften/Application/ApplicationMessageDisplay.h"
-
-namespace Swift {
-	class NullApplicationMessageDisplay : public ApplicationMessageDisplay {
-		public:
-			NullApplicationMessageDisplay() {}
-
-			virtual void setMessage(const String&) {
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Application/Platform/PlatformApplication.h b/Swiften/Application/Platform/PlatformApplication.h
deleted file mode 100644
index 749bce4..0000000
--- a/Swiften/Application/Platform/PlatformApplication.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef SWIFTEN_PlatformApplication_H
-#define SWIFTEN_PlatformApplication_H
-
-#include "Swiften/Base/Platform.h"
-
-
-#if defined(SWIFTEN_PLATFORM_MACOSX)
-#include "Swiften/Application/MacOSX/MacOSXApplication.h"
-namespace Swift {
-	typedef MacOSXApplication PlatformApplication;
-}
-#elif defined(SWIFTEN_PLATFORM_WIN32)
-#include "Swiften/Application/Windows/WindowsApplication.h"
-namespace Swift {
-	typedef WindowsApplication PlatformApplication;
-}
-#else
-#include "Swiften/Application/Unix/UnixApplication.h"
-namespace Swift {
-	typedef UnixApplication PlatformApplication;
-}
-#endif
-
-#endif
diff --git a/Swiften/Application/SConscript b/Swiften/Application/SConscript
deleted file mode 100644
index 78b3a34..0000000
--- a/Swiften/Application/SConscript
+++ /dev/null
@@ -1,16 +0,0 @@
-Import("swiften_env")
-
-sources = [
-		"Application.cpp",
-		"ApplicationMessageDisplay.cpp",
-	]
-
-if swiften_env["PLATFORM"] == "darwin" and swiften_env["target"] == "native" :
-	sources += [
-			"MacOSX/MacOSXApplication.cpp",
-			"MacOSX/MacOSXApplicationMessageDisplay.mm",
-			"MacOSX/MacOSXApplicationInitializer.mm",
-		]
-
-objects = swiften_env.StaticObject(sources)
-swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/Application/UnitTest/ApplicationTest.cpp b/Swiften/Application/UnitTest/ApplicationTest.cpp
deleted file mode 100644
index 0196755..0000000
--- a/Swiften/Application/UnitTest/ApplicationTest.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Application/Application.h"
-#include "Swiften/Application/Platform/PlatformApplication.h"
-
-using namespace Swift;
-
-class ApplicationTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(ApplicationTest);
-		CPPUNIT_TEST(testGetSettingsDir);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		ApplicationTest() {}
-
-		void setUp() {
-			testling_ = new PlatformApplication("SwiftTest");
-		}
-
-		void tearDown() {
-			delete testling_;
-		}
-
-		void testGetSettingsDir() {
-			boost::filesystem::path dir = testling_->getSettingsDir();
-
-			CPPUNIT_ASSERT(boost::filesystem::exists(dir));
-			CPPUNIT_ASSERT(boost::filesystem::is_directory(dir));
-
-			boost::filesystem::remove(dir);
-		}
-	
-	private:
-		Application* testling_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ApplicationTest);
diff --git a/Swiften/Application/Unix/UnixApplication.h b/Swiften/Application/Unix/UnixApplication.h
deleted file mode 100644
index c2671d8..0000000
--- a/Swiften/Application/Unix/UnixApplication.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef SWIFTEN_UnixApplication_H
-#define SWIFTEN_UnixApplication_H
-
-#include "Swiften/Application/Application.h"
-#include "Swiften/Application/NullApplicationMessageDisplay.h"
-
-namespace Swift {
-	class UnixApplication : public Application {
-		public:
-			UnixApplication(const String& name) : Application(name) {
-			}
-
-			virtual ApplicationMessageDisplay* getApplicationMessageDisplay() {
-				return  &messageDisplay_;
-			}
-
-			virtual boost::filesystem::path getHomeDir() const {
-				return boost::filesystem::path(getenv("HOME"));
-			}
-
-			boost::filesystem::path getSettingsDir() const {
-				boost::filesystem::path result(getHomeDir() / ("." + getName().getLowerCase().getUTF8String()));
-				boost::filesystem::create_directory(result);
-				return result;
-			}
-
-		private:
-			NullApplicationMessageDisplay messageDisplay_;
-	};
-}
-
-#endif
diff --git a/Swiften/Application/Windows/WindowsApplication.h b/Swiften/Application/Windows/WindowsApplication.h
deleted file mode 100644
index 365157b..0000000
--- a/Swiften/Application/Windows/WindowsApplication.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef SWIFTEN_WindowsApplication_H
-#define SWIFTEN_WindowsApplication_H
-
-#include "Swiften/Application/Application.h"
-#include "Swiften/Application/NullApplicationMessageDisplay.h"
-
-namespace Swift {
-	class WindowsApplication : public Application {
-		public:
-			WindowsApplication(const String& name) : Application(name) {
-			}
-
-			virtual ApplicationMessageDisplay* getApplicationMessageDisplay() {
-				return  &messageDisplay_;
-			}
-
-			boost::filesystem::path getSettingsDir() const {
-				char* appDirRaw = getenv("APPDATA");
-				boost::filesystem::path result(boost::filesystem::path(appDirRaw) / getName().getUTF8String());
-				boost::filesystem::create_directory(result);
-				return result;
-			}
-
-			boost::filesystem::path getHomeDir() const {
-				//FIXME: This should be My Documents 
-				
-				char* homeDirRaw = getenv("USERPROFILE");
-				return boost::filesystem::path(homeDirRaw);
-			}
-
-		private:
-			NullApplicationMessageDisplay messageDisplay_;
-	};
-}
-
-#endif
diff --git a/Swiften/Avatars/AvatarFileStorage.cpp b/Swiften/Avatars/AvatarFileStorage.cpp
deleted file mode 100644
index 1348018..0000000
--- a/Swiften/Avatars/AvatarFileStorage.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "Swiften/Avatars/AvatarFileStorage.h"
-
-#include <iostream>
-#include <boost/filesystem/fstream.hpp>
-
-namespace Swift {
-
-AvatarFileStorage::AvatarFileStorage(const boost::filesystem::path& path) : path_(path) {
-	boost::filesystem::create_directory(path_);
-}
-
-bool AvatarFileStorage::hasAvatar(const String& hash) const { 
-	return boost::filesystem::exists(getAvatarPath(hash));
-}
-
-void AvatarFileStorage::addAvatar(const String& hash, const ByteArray& avatar) {
-	boost::filesystem::ofstream file(getAvatarPath(hash), boost::filesystem::ofstream::binary|boost::filesystem::ofstream::out);
-	file.write(avatar.getData(), avatar.getSize());
-	file.close();
-}
-
-boost::filesystem::path AvatarFileStorage::getAvatarPath(const String& hash) const {
-	return path_ / hash.getUTF8String();
-}
-
-}
diff --git a/Swiften/Avatars/AvatarFileStorage.h b/Swiften/Avatars/AvatarFileStorage.h
deleted file mode 100644
index 1afa703..0000000
--- a/Swiften/Avatars/AvatarFileStorage.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-#include <map>
-#include <boost/filesystem.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Avatars/AvatarStorage.h"
-
-namespace Swift {
-	class AvatarFileStorage : public AvatarStorage {
-		public:
-			AvatarFileStorage(const boost::filesystem::path& path);
-
-			virtual bool hasAvatar(const String& hash) const;
-			virtual void addAvatar(const String& hash, const ByteArray& avatar);
-
-			virtual boost::filesystem::path getAvatarPath(const String& hash) const;
-
-		private:
-			boost::filesystem::path path_;
-	};
-
-}
diff --git a/Swiften/Avatars/AvatarManager.cpp b/Swiften/Avatars/AvatarManager.cpp
deleted file mode 100644
index 3825ffd..0000000
--- a/Swiften/Avatars/AvatarManager.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-#include "Swiften/Avatars/AvatarManager.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/Client/StanzaChannel.h"
-#include "Swiften/Elements/VCardUpdate.h"
-#include "Swiften/Queries/Requests/GetVCardRequest.h"
-#include "Swiften/StringCodecs/SHA1.h"
-#include "Swiften/StringCodecs/Hexify.h"
-#include "Swiften/Avatars/AvatarStorage.h"
-#include "Swiften/MUC/MUCRegistry.h"
-
-namespace Swift {
-
-AvatarManager::AvatarManager(StanzaChannel* stanzaChannel, IQRouter* iqRouter, AvatarStorage* avatarStorage, MUCRegistry* mucRegistry) : stanzaChannel_(stanzaChannel), iqRouter_(iqRouter), avatarStorage_(avatarStorage), mucRegistry_(mucRegistry) {
-	stanzaChannel->onPresenceReceived.connect(boost::bind(&AvatarManager::handlePresenceReceived, this, _1));
-}
-
-AvatarManager::AvatarManager() {
-	stanzaChannel_ = NULL;
-	iqRouter_ = NULL;
-	avatarStorage_ = NULL;
-	mucRegistry_ = NULL;
-}
-
-AvatarManager::~AvatarManager() {
-
-}
-
-void AvatarManager::setMUCRegistry(MUCRegistry* mucRegistry) {
-	mucRegistry_ = mucRegistry;
-}
-
-void AvatarManager::handlePresenceReceived(boost::shared_ptr<Presence> presence) {
-	boost::shared_ptr<VCardUpdate> update = presence->getPayload<VCardUpdate>();
-	if (!update) {
-		return;
-	}
-	JID from = getAvatarJID(presence->getFrom());
-	String& hash = avatarHashes_[from];
-	if (hash != update->getPhotoHash()) {
-		String newHash = update->getPhotoHash();
-		if (avatarStorage_->hasAvatar(newHash)) {
-			setAvatarHash(from, newHash);
-		}
-		else {
-			boost::shared_ptr<GetVCardRequest> request(new GetVCardRequest(from, iqRouter_));
-			request->onResponse.connect(boost::bind(&AvatarManager::handleVCardReceived, this, from, newHash, _1, _2));
-			request->send();
-		}
-	}
-}
-
-void AvatarManager::handleVCardReceived(const JID& from, const String& promisedHash, boost::shared_ptr<VCard> vCard, const boost::optional<ErrorPayload>& error) {
-	if (error) {
-		// FIXME: What to do here?
-		std::cerr << "Warning: " << from << ": Could not get vCard" << std::endl;
-		return;
-	}
-	if (!vCard) {
-		std::cerr << "Warning: " << from << ": null vcard payload" << std::endl;
-		//FIXME: Why could this happen?
-		return;
-	}
-	String realHash = Hexify::hexify(SHA1::getHash(vCard->getPhoto()));
-	if (promisedHash != realHash) {
-		std::cerr << "Warning: " << from << ": Got different vCard photo hash (" << promisedHash << " != " << realHash << ")" << std::endl;
-	}
-	avatarStorage_->addAvatar(realHash, vCard->getPhoto());
-	setAvatarHash(from, realHash);
-}
-
-void AvatarManager::setAvatar(const JID& jid, const ByteArray& avatar) {
-	String hash = Hexify::hexify(SHA1::getHash(avatar));
-	avatarStorage_->addAvatar(hash, avatar);
-	setAvatarHash(getAvatarJID(jid), hash);
-}
-
-void AvatarManager::setAvatarHash(const JID& from, const String& hash) {
-	avatarHashes_[from] = hash;
-	onAvatarChanged(from, hash);
-}
-
-String AvatarManager::getAvatarHash(const JID& jid) const {
-	std::map<JID, String>::const_iterator i = avatarHashes_.find(getAvatarJID(jid));
-	if (i != avatarHashes_.end()) {
-		return i->second;
-	}
-	else {
-		return "";
-	}
-}
-
-boost::filesystem::path AvatarManager::getAvatarPath(const JID& jid) const {
-	String hash = getAvatarHash(jid);
-	if (!hash.isEmpty()) {
-		return avatarStorage_->getAvatarPath(hash);
-	}
-	return boost::filesystem::path();
-}
-
-JID AvatarManager::getAvatarJID(const JID& jid) const {
-	JID bareFrom = jid.toBare();
-	return (mucRegistry_ && mucRegistry_->isMUC(bareFrom)) ? jid : bareFrom;
-}
-
-
-}
diff --git a/Swiften/Avatars/AvatarManager.h b/Swiften/Avatars/AvatarManager.h
deleted file mode 100644
index fd308d9..0000000
--- a/Swiften/Avatars/AvatarManager.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#pragma once
-
-#include <boost/filesystem.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/optional.hpp>
-#include <boost/signal.hpp>
-#include <map>
-
-#include "Swiften/JID/JID.h"
-#include "Swiften/Elements/Presence.h"
-#include "Swiften/Elements/VCard.h"
-#include "Swiften/Elements/ErrorPayload.h"
-
-namespace Swift {
-	class MUCRegistry;
-	class AvatarStorage;
-	class StanzaChannel;
-	class IQRouter;
-
-	class AvatarManager {
-		public:
-			AvatarManager(StanzaChannel*, IQRouter*, AvatarStorage*, MUCRegistry* = NULL);
-			virtual ~AvatarManager();
-
-			virtual void setMUCRegistry(MUCRegistry*);
-
-			virtual String getAvatarHash(const JID&) const;
-			virtual boost::filesystem::path getAvatarPath(const JID&) const;
-			virtual void setAvatar(const JID&, const ByteArray& avatar);
-
-		public:
-			boost::signal<void (const JID&, const String&)> onAvatarChanged;
-
-		protected:
-			/** Used only for testing. Leads to a non-functional object. */
-			AvatarManager();
-
-		private:
-			void handlePresenceReceived(boost::shared_ptr<Presence>);
-			void handleVCardReceived(const JID& from, const String& hash, boost::shared_ptr<VCard>, const boost::optional<ErrorPayload>&);
-			void setAvatarHash(const JID& from, const String& hash);
-			JID getAvatarJID(const JID& o) const;
-
-		private:
-			StanzaChannel* stanzaChannel_;
-			IQRouter* iqRouter_;
-			AvatarStorage* avatarStorage_;
-			MUCRegistry* mucRegistry_;
-			std::map<JID, String> avatarHashes_;
-	};
-}
diff --git a/Swiften/Avatars/AvatarStorage.cpp b/Swiften/Avatars/AvatarStorage.cpp
deleted file mode 100644
index 4c98314..0000000
--- a/Swiften/Avatars/AvatarStorage.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Avatars/AvatarStorage.h"
-
-namespace Swift {
-
-AvatarStorage::~AvatarStorage() {
-}
-
-}
diff --git a/Swiften/Avatars/AvatarStorage.h b/Swiften/Avatars/AvatarStorage.h
deleted file mode 100644
index b5c0f32..0000000
--- a/Swiften/Avatars/AvatarStorage.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#pragma once
-
-#include <boost/filesystem.hpp>
-
-namespace Swift {
-	class String;
-	class ByteArray;
-
-	class AvatarStorage {
-		public:
-			virtual ~AvatarStorage();
-
-			virtual bool hasAvatar(const String& hash) const = 0;
-			virtual void addAvatar(const String& hash, const ByteArray& avatar) = 0;
-			virtual boost::filesystem::path getAvatarPath(const String& hash) const = 0;
-	};
-
-}
diff --git a/Swiften/Avatars/UnitTest/AvatarManagerTest.cpp b/Swiften/Avatars/UnitTest/AvatarManagerTest.cpp
deleted file mode 100644
index 3b4c5f9..0000000
--- a/Swiften/Avatars/UnitTest/AvatarManagerTest.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Elements/VCardUpdate.h"
-#include "Swiften/Avatars/AvatarManager.h"
-#include "Swiften/Avatars/AvatarStorage.h"
-#include "Swiften/MUC/MUCRegistry.h"
-#include "Swiften/Queries/IQRouter.h"
-#include "Swiften/Client/DummyStanzaChannel.h"
-
-using namespace Swift;
-
-class AvatarManagerTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(AvatarManagerTest);
-		CPPUNIT_TEST(testUpdate_UpdateNewHash);
-		CPPUNIT_TEST(testUpdate_UpdateNewHashAlreadyHaveAvatar);
-		CPPUNIT_TEST(testUpdate_UpdateNewHashFromMUC);
-		CPPUNIT_TEST(testUpdate_UpdateSameHash);
-		CPPUNIT_TEST(testUpdate_UpdateNewHashSameThanOtherUser);
-		CPPUNIT_TEST(testReceiveVCard);
-		CPPUNIT_TEST(testGetAvatarPath);
-		CPPUNIT_TEST(testGetAvatarPathFromMUC);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		AvatarManagerTest() {}
-
-		void setUp() {
-			stanzaChannel_ = new DummyStanzaChannel();
-			iqRouter_ = new IQRouter(stanzaChannel_);
-			mucRegistry_ = new DummyMUCRegistry();
-			avatarStorage_ = new DummyAvatarStorage();
-		}
-
-		void tearDown() {
-			delete avatarStorage_;
-			delete mucRegistry_;
-			delete iqRouter_;
-			delete stanzaChannel_;
-		}
-
-		void testUpdate_UpdateNewHash() {
-			std::auto_ptr<AvatarManager> testling = createManager();
-			stanzaChannel_->onPresenceReceived(createPresenceWithPhotoHash());
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(stanzaChannel_->sentStanzas_.size()));
-			IQ* 
-			CPPUNIT_ASSERT(stanzaChannel->isRequestAtIndex<VCardUpdate>(0, JID("foo@bar.com"), IQ::Get));
-		}
-
-		void testUpdate_UpdateNewHashAlreadyHaveAvatar() {
-			std::auto_ptr<AvatarManager> testling = createManager();
-		}
-
-		void testUpdate_UpdateNewHashFromMUC() {
-			std::auto_ptr<AvatarManager> testling = createManager();
-		}
-
-		void testUpdate_UpdateSameHash() {
-			std::auto_ptr<AvatarManager> testling = createManager();
-		}
-
-		void testUpdate_UpdateNewHashSameThanOtherUser() {
-			std::auto_ptr<AvatarManager> testling = createManager();
-		}
-
-		void testReceiveVCard() {
-			std::auto_ptr<AvatarManager> testling = createManager();
-		}
-
-		void testGetAvatarPath() {
-			std::auto_ptr<AvatarManager> testling = createManager();
-		}
-
-		void testGetAvatarPathFromMUC() {
-			std::auto_ptr<AvatarManager> testling = createManager();
-		}
-
-	private:
-		std::auto_ptr<AvatarManager> createManager() {
-			return std::auto_ptr<AvatarManager>(new AvatarManager(stanzaChannel_, iqRouter_, avatarStorage_, mucRegistry_));
-		}
-
-		boost::shared_ptr<Presence> createPresenceWithPhotoHash() {
-			boost::shared_ptr<Presence> presence(new Presence());
-			presence->setFrom(JID("foo@bar.com/baz"));
-			presence->addPayload(boost::shared_ptr<VCardUpdate>(new VCardUpdate("aef56135bcce35eb24a43fcd684005b4ca286497")));
-			return presence;
-		}
-
-	private:
-		struct DummyMUCRegistry : public MUCRegistry {
-			bool isMUC(const JID& jid) const { return std::find(mucs_.begin(), mucs_.end(), jid) != mucs_.end(); }
-			std::vector<JID> mucs_;
-		};
-		struct DummyAvatarStorage : public AvatarStorage {
-			virtual bool hasAvatar(const String& hash) const { return avatars.find(hash) != avatars.end(); }
-			virtual void addAvatar(const String& hash, const ByteArray& avatar) { avatars[hash] = avatar; }
-			virtual boost::filesystem::path getAvatarPath(const String& hash) const {
-				return boost::filesystem::path("/avatars") / hash.getUTF8String();
-			}
-			std::map<String, ByteArray> avatars;
-		};
-		DummyStanzaChannel* stanzaChannel_;
-		IQRouter* iqRouter_;
-		DummyMUCRegistry* mucRegistry_;
-		DummyAvatarStorage* avatarStorage_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(AvatarManagerTest);
diff --git a/Swiften/Avatars/UnitTest/MockAvatarManager.cpp b/Swiften/Avatars/UnitTest/MockAvatarManager.cpp
deleted file mode 100644
index 2d3d48a..0000000
--- a/Swiften/Avatars/UnitTest/MockAvatarManager.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "Swiften/Avatars/UnitTest/MockAvatarManager.h"
-
-namespace Swift {
-
-MockAvatarManager::MockAvatarManager() {
-
-}
-
-MockAvatarManager::~MockAvatarManager() {
-
-}
-
-String MockAvatarManager::getAvatarHash(const JID& jid) const {
-	return jid.toBare();
-}
-
-boost::filesystem::path MockAvatarManager::getAvatarPath(const JID& jid) const {
-	return jid.getResource().getUTF8String();
-}
-
-void MockAvatarManager::setAvatar(const JID&, const ByteArray&) {
-
-}
-
-}
-
diff --git a/Swiften/Avatars/UnitTest/MockAvatarManager.h b/Swiften/Avatars/UnitTest/MockAvatarManager.h
deleted file mode 100644
index 416d921..0000000
--- a/Swiften/Avatars/UnitTest/MockAvatarManager.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#pragma once
-
-#include "Swiften/Avatars/AvatarManager.h"
-#include "Swiften/Client/DummyStanzaChannel.h"
-
-namespace Swift {
-	class MockAvatarManager : public AvatarManager {
-		public:
-			MockAvatarManager();
-			virtual ~MockAvatarManager();
-			virtual String getAvatarHash(const JID&) const;
-			virtual boost::filesystem::path getAvatarPath(const JID&) const;
-			virtual void setAvatar(const JID&, const ByteArray& avatar);
-		private:
-			DummyStanzaChannel channel_;
-	};
-}
diff --git a/Swiften/Base/ByteArray.cpp b/Swiften/Base/ByteArray.cpp
deleted file mode 100644
index b3a5d8d..0000000
--- a/Swiften/Base/ByteArray.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "Swiften/Base/ByteArray.h"
-
-#include <fstream>
-
-std::ostream& operator<<(std::ostream& os, const Swift::ByteArray& s) {
-	std::ios::fmtflags oldFlags = os.flags(); 
-	os << std::hex;
-	for (Swift::ByteArray::const_iterator i = s.begin(); i != s.end(); ++i) {
-		os << "0x" << static_cast<unsigned int>(static_cast<unsigned char>(*i));
-		if (i + 1 < s.end()) {
-			os << " ";
-		}
-	}
-	os << std::endl;
-	os.flags(oldFlags);
-	return os;
-}
-
-namespace Swift {
-
-static const int BUFFER_SIZE = 4096;
-
-void ByteArray::readFromFile(const String& file) {
-	std::ifstream input(file.getUTF8Data(), std::ios_base::in|std::ios_base::binary);
-	while (input.good()) {
-		size_t oldSize = data_.size();
-		data_.resize(oldSize + BUFFER_SIZE);
-		input.read(&data_[oldSize], BUFFER_SIZE);
-		data_.resize(oldSize + input.gcount());
-	}
-	input.close();
-}
-
-}
diff --git a/Swiften/Base/ByteArray.h b/Swiften/Base/ByteArray.h
deleted file mode 100644
index ab256a4..0000000
--- a/Swiften/Base/ByteArray.h
+++ /dev/null
@@ -1,103 +0,0 @@
-#pragma once
-
-#include <cstring>
-#include <vector>
-#include <iostream>
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class ByteArray
-	{
-		public:
-			typedef std::vector<char>::const_iterator const_iterator;
-
-			ByteArray() : data_() {}
-
-			ByteArray(const String& s) : data_(s.getUTF8String().begin(), s.getUTF8String().end()) {}
-
-			ByteArray(const char* c) {
-				while (*c) {
-					data_.push_back(*c);
-					++c;
-				}
-			}
-
-			ByteArray(const char* c, size_t n) {
-				if (n > 0) {
-					data_.resize(n);
-					memcpy(&data_[0], c, n);
-				}
-			}
-
-			const char* getData() const {
-				return data_.empty() ? NULL : &data_[0];
-			}
-
-			char* getData() {
-				return data_.empty() ? NULL : &data_[0];
-			}
-
-			size_t getSize() const {
-				return data_.size();
-			}
-
-			bool isEmpty() const {
-				return data_.empty();
-			}
-
-			void resize(size_t size) {
-				return data_.resize(size);
-			}
-
-			friend ByteArray operator+(const ByteArray& a, const ByteArray&b) {
-				ByteArray result(a);
-				result.data_.insert(result.data_.end(), b.data_.begin(), b.data_.end());
-				return result;
-			}
-
-			friend ByteArray operator+(const ByteArray& a, char b) {
-				ByteArray x;
-				x.resize(1);
-				x[0] = b;
-				return a + x;
-			}
-
-			ByteArray& operator+=(const ByteArray& b) {
-				data_.insert(data_.end(), b.data_.begin(), b.data_.end());
-				return *this;
-			}
-
-			friend bool operator==(const ByteArray& a, const ByteArray& b) {
-				return a.data_ == b.data_;
-			}
-
-
-			const char& operator[](size_t i) const {
-				return data_[i];
-			}
-
-			char& operator[](size_t i) {
-				return data_[i];
-			}
-
-			const_iterator begin() const { 
-				return data_.begin(); 
-			}
-		
-			const_iterator end() const { 
-				return data_.end(); 
-			}
-
-			String toString() const {
-				return String(getData(), getSize());
-			}
-
-			void readFromFile(const String& file);
-
-		private:
-			std::vector<char> data_;
-	};
-}
-
-std::ostream& operator<<(std::ostream& os, const Swift::ByteArray& s);
diff --git a/Swiften/Base/Error.cpp b/Swiften/Base/Error.cpp
deleted file mode 100644
index 597c155..0000000
--- a/Swiften/Base/Error.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Base/Error.h"
-
-namespace Swift {
-
-Error::~Error() {
-}
-
-}
diff --git a/Swiften/Base/Error.h b/Swiften/Base/Error.h
deleted file mode 100644
index 4c729ff..0000000
--- a/Swiften/Base/Error.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-
-namespace Swift {
-	class Error {
-		public:
-			virtual ~Error();
-	};
-};
diff --git a/Swiften/Base/IDGenerator.cpp b/Swiften/Base/IDGenerator.cpp
deleted file mode 100644
index 07ead43..0000000
--- a/Swiften/Base/IDGenerator.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "Swiften/Base/IDGenerator.h"
-
-namespace Swift {
-
-IDGenerator::IDGenerator() {
-}
-
-String IDGenerator::generateID() {
-	bool carry = true;
-	size_t i = 0;
-	while (carry && i < currentID_.getUTF8Size()) {
-		char c = currentID_.getUTF8String()[i];
-		if (c >= 'z') {
-			currentID_.getUTF8String()[i] = 'a';
-		}
-		else {
-			currentID_.getUTF8String()[i] = c+1;
-			carry = false;
-		}
-		++i;
-	}
-	if (carry) {
-		currentID_ += 'a';
-	}
-	return currentID_;
-}
-
-}
diff --git a/Swiften/Base/IDGenerator.h b/Swiften/Base/IDGenerator.h
deleted file mode 100644
index db7b80d..0000000
--- a/Swiften/Base/IDGenerator.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef SWIFTEN_IDGenerator_H
-#define SWIFTEN_IDGenerator_H
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class IDGenerator {
-		public:
-			IDGenerator();
-
-			String generateID();
-
-		private:
-			String currentID_;
-	};
-}
-
-#endif
diff --git a/Swiften/Base/Platform.h b/Swiften/Base/Platform.h
deleted file mode 100644
index 9e4c398..0000000
--- a/Swiften/Base/Platform.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef SWIFTEN_Platform_H
-#define SWIFTEN_Platform_H
-
-// Base platforms
-#if defined(linux) || defined(__linux) || defined(__linux__)
-#define SWIFTEN_PLATFORM_LINUX
-#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
-#define SWIFTEN_PLATFORM_BSD
-#elif defined(sun) || defined(__sun)
-#define SWIFTEN_PLATFORM_SOLARIS
-#elif defined(__sgi)
-#define SWIFTEN_PLATFORM_SGI
-#elif defined(__hpux)
-#define SWIFTEN_PLATFORM_HPUX
-#elif defined(__CYGWIN__)
-#define SWIFTEN_PLATFORM_CYGWIN
-#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
-#define SWIFTEN_PLATFORM_WIN32
-#elif defined(__BEOS__)
-#define SWIFTEN_PLATFORM_BEOS
-#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
-#define SWIFTEN_PLATFORM_MACOSX
-#elif defined(__IBMCPP__) || defined(_AIX)
-#define SWIFTEN_PLATFORM_AIX
-#elif defined(__amigaos__)
-#define SWIFTEN_PLATFORM_AMIGAOS
-#elif defined(__QNXNTO__)
-#define SWIFTEN_PLATFORM_QNX
-#endif
-
-// Derived platforms
-#if defined(SWIFTEN_PLATFORM_CYGWIN) || defined(SWIFTEN_PLATFORM_WIN32)
-#define SWIFTEN_PLATFORM_WINDOWS
-#endif
-
-// Endianness
-#include <boost/detail/endian.hpp>
-#if defined(BOOST_LITTLE_ENDIAN)
-#define SWIFTEN_LITTLE_ENDIAN
-#elif defined(BOOST_BIG_ENDIAN)
-#define SWIFTEN_BIG_ENDIAN
-#endif
-
-#endif
diff --git a/Swiften/Base/SConscript b/Swiften/Base/SConscript
deleted file mode 100644
index a0984e5..0000000
--- a/Swiften/Base/SConscript
+++ /dev/null
@@ -1,10 +0,0 @@
-Import("swiften_env")
-
-objects = swiften_env.StaticObject([
-			"ByteArray.cpp",
-			"Error.cpp",
-			"IDGenerator.cpp",
-			"String.cpp",
-			"sleep.cpp",
-		])
-swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/Base/String.cpp b/Swiften/Base/String.cpp
deleted file mode 100644
index cc989f6..0000000
--- a/Swiften/Base/String.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-#include <cassert>
-#include <algorithm>
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-
-static inline size_t sequenceLength(char firstByte) {
-	if ((firstByte & 0x80) == 0) {
-		return 1;
-	}
-	if ((firstByte & 0xE0) == 0xC0) {
-		return 2;
-	}
-	if ((firstByte & 0xF0) == 0xE0) {
-		return 3;
-	}
-	if ((firstByte & 0xF8) == 0xF0) {
-		return 4;
-	}
-	if ((firstByte & 0xFC) == 0xF8) {
-		return 5;
-	}
-	if ((firstByte & 0xFE) == 0xFC) {
-		return 6;
-	}
-	assert(false);
-	return 1;
-}
-
-std::vector<unsigned int> String::getUnicodeCodePoints() const {
-	std::vector<unsigned int> result;
-	for (size_t i = 0; i < data_.size();) {
-		unsigned int codePoint = 0;
-		char firstChar = data_[i];
-		size_t length = sequenceLength(firstChar);
-
-		// First character is special
-		size_t firstCharBitSize = 7 - length;
-		if (length == 1) {
-			firstCharBitSize = 7;
-		}
-		codePoint = firstChar & ((1<<(firstCharBitSize+1)) - 1);
-
-		for (size_t j = 1; j < length; ++j) {
-			codePoint = (codePoint<<6) | (data_[i+j] & 0x3F);
-		}
-		result.push_back(codePoint);
-		i += length;
-	}
-	return result;
-}
-
-
-std::pair<String,String> String::getSplittedAtFirst(char c) const {
-	assert((c & 0x80) == 0);
-	size_t firstMatch = data_.find(c);
-	if (firstMatch != data_.npos) {
-		return std::make_pair(data_.substr(0,firstMatch),data_.substr(firstMatch+1,data_.npos));
-	}
-	else {
-		return std::make_pair(*this, "");
-	}
-}
-
-size_t String::getLength() const {
-	size_t size = 0, current = 0, end = data_.size();
-	while (current < end) {
-		size++;
-		current += sequenceLength(data_[current]);
-	}
-	return size;
-}
-
-void String::removeAll(char c) {
-	size_t lastPos = 0;
-	size_t matchingIndex = 0;
-	while ((matchingIndex = data_.find(c, lastPos)) != data_.npos) {
-		data_.erase(matchingIndex, 1);
-		lastPos = matchingIndex;
-	}
-}
-
-void String::replaceAll(char c, const String& s) {
-	size_t lastPos = 0;
-	size_t matchingIndex = 0;
-	while ((matchingIndex = data_.find(c, lastPos)) != data_.npos) {
-		data_.replace(matchingIndex, 1, s.data_);
-		lastPos = matchingIndex + s.data_.size();
-	}
-}
-
-String String::getLowerCase() const {
-	std::string lower(data_);
-	std::transform(lower.begin(), lower.end(), lower.begin(), ::tolower);
-	return String(lower);
-}
-
-std::vector<String> String::split(char c) const {
-	assert((c & 0x80) == 0);
-	std::vector<String> result;
-	String accumulator;
-	for (size_t i = 0; i < data_.size(); ++i) {
-		if (data_[i] == c) {
-			result.push_back(accumulator);
-			accumulator = "";
-		}
-		else {
-			accumulator += data_[i];
-		}
-	}
-	result.push_back(accumulator);
-	return result;
-}
-
-}
diff --git a/Swiften/Base/String.h b/Swiften/Base/String.h
deleted file mode 100644
index 7a6a9cc..0000000
--- a/Swiften/Base/String.h
+++ /dev/null
@@ -1,131 +0,0 @@
-#ifndef SWIFTEN_STRING_H
-#define SWIFTEN_STRING_H
-
-#include <ostream>
-#include <string>
-#include <utility>
-#include <vector>
-#include <cassert>
-
-#define SWIFTEN_STRING_TO_CFSTRING(a) \
-	CFStringCreateWithBytes(NULL, reinterpret_cast<const UInt8*>(a.getUTF8Data()), a.getUTF8Size(), kCFStringEncodingUTF8, false)
-
-namespace Swift {
-	class ByteArray;
-
-	class String {
-			friend class ByteArray;
-
-		public:
-			String() {}
-			String(const char* data) : data_(data) {}
-			String(const char* data, size_t len) : data_(data, len) {}
-			String(const std::string& data) : data_(data) {}
-
-			bool isEmpty() const { return data_.empty(); }
-
-			const char* getUTF8Data() const { return data_.c_str(); }
-			const std::string& getUTF8String() const { return data_; }
-			std::string& getUTF8String() { return data_; }
-			size_t getUTF8Size() const { return data_.size(); }
-			std::vector<unsigned int> getUnicodeCodePoints() const;
-
-			/**
-			 * Returns the part before and after 'c'.
-			 * If the given splitter does not occur in the string, the second
-			 * component is the empty string.
-			 */
-			std::pair<String,String> getSplittedAtFirst(char c) const;
-
-			std::vector<String> split(char c) const;
-
-			size_t getLength() const;
-			String getLowerCase() const;
-
-			void removeAll(char c);
-
-			void replaceAll(char c, const String& s);
-
-			bool beginsWith(char c) const { 
-				return data_.size() > 0 && data_[0] == c; 
-			}
-
-			bool beginsWith(const String& s) const {
-				return data_.substr(0, s.data_.size()) == s;
-			}
-
-			bool endsWith(char c) const { 
-				return data_.size() > 0 && data_[data_.size()-1] == c; 
-			}
-
-			String getSubstring(size_t begin, size_t end) const {
-				return String(data_.substr(begin, end));
-			}
-
-			size_t find(char c) const {
-				assert((c & 0x80) == 0);
-				return data_.find(c);
-			}
-
-			size_t npos() const {
-				return data_.npos;
-			}
-
-			friend String operator+(const String& a, const String& b) {
-				return String(a.data_ + b.data_);
-			}
-
-			friend String operator+(const String& a, char b) {
-				return String(a.data_ + b);
-			}
-
-			String& operator+=(const String& o) {
-				data_ += o.data_;
-				return *this;
-			}
-
-			String& operator+=(char c) {
-				data_ += c;
-				return *this;
-			}
-
-			String& operator=(const String& o) {
-				data_ = o.data_;
-				return *this;
-			}
-
-			bool contains(const String& o) {
-				return data_.find(o.data_) != std::string::npos;
-			}
-
-			char operator[](size_t i) const {
-				return data_[i];
-			}
-
-			friend bool operator>(const String& a, const String& b) {
-				return a.data_ > b.data_;
-			}
-
-			friend bool operator<(const String& a, const String& b) {
-				return a.data_ < b.data_;
-			}
-
-			friend bool operator!=(const String& a, const String& b) {
-				return a.data_ != b.data_;
-			}
-
-			friend bool operator==(const String& a, const String& b) {
-				return a.data_ == b.data_;
-			}
-
-			friend std::ostream& operator<<(std::ostream& os, const String& s) {
-				os << s.data_;
-				return os;
-			}
-
-		private:
-			std::string data_;
-	};
-}
-
-#endif
diff --git a/Swiften/Base/UnitTest/ByteArrayTest.cpp b/Swiften/Base/UnitTest/ByteArrayTest.cpp
deleted file mode 100644
index bf893bd..0000000
--- a/Swiften/Base/UnitTest/ByteArrayTest.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Base/ByteArray.h"
-
-using namespace Swift;
-
-class ByteArrayTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(ByteArrayTest);
-		CPPUNIT_TEST(testGetData_NoData);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testGetData_NoData() {
-			ByteArray testling;
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<const char*>(NULL), static_cast<const char*>(testling.getData()));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ByteArrayTest);
diff --git a/Swiften/Base/UnitTest/IDGeneratorTest.cpp b/Swiften/Base/UnitTest/IDGeneratorTest.cpp
deleted file mode 100644
index bd96d91..0000000
--- a/Swiften/Base/UnitTest/IDGeneratorTest.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <set>
-
-#include "Swiften/Base/IDGenerator.h"
-
-using namespace Swift;
-
-class IDGeneratorTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(IDGeneratorTest);
-		CPPUNIT_TEST(testGenerate);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		IDGeneratorTest() {}
-
-		void setUp() {
-			generatedIDs_.clear();
-		}
-
-		void testGenerate() {
-			IDGenerator testling;
-			for (unsigned int i = 0; i < 26*4; ++i) {
-				String id = testling.generateID();
-				CPPUNIT_ASSERT(generatedIDs_.insert(id).second);
-			}
-		}
-	
-	private:
-		std::set<String> generatedIDs_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(IDGeneratorTest);
diff --git a/Swiften/Base/UnitTest/StringTest.cpp b/Swiften/Base/UnitTest/StringTest.cpp
deleted file mode 100644
index 87e1a99..0000000
--- a/Swiften/Base/UnitTest/StringTest.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Base/String.h"
-
-using namespace Swift;
-
-class StringTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(StringTest);
-		CPPUNIT_TEST(testGetLength);
-		CPPUNIT_TEST(testGetLength_EncodedLength2);
-		CPPUNIT_TEST(testGetLength_EncodedLength3);
-		CPPUNIT_TEST(testGetLength_EncodedLength4);
-		CPPUNIT_TEST(testGetUnicodeCodePoints);
-		CPPUNIT_TEST(testGetSplittedAtFirst);
-		CPPUNIT_TEST(testGetSplittedAtFirst_CharacterAtEnd);
-		CPPUNIT_TEST(testGetSplittedAtFirst_NoSuchCharacter);
-		CPPUNIT_TEST(testRemoveAll);
-		CPPUNIT_TEST(testRemoveAll_LastChar);
-		CPPUNIT_TEST(testRemoveAll_ConsecutiveChars);
-		CPPUNIT_TEST(testReplaceAll);
-		CPPUNIT_TEST(testReplaceAll_LastChar);
-		CPPUNIT_TEST(testReplaceAll_ConsecutiveChars);
-		CPPUNIT_TEST(testReplaceAll_MatchingReplace);
-		CPPUNIT_TEST(testGetLowerCase);
-		CPPUNIT_TEST(testSplit);
- 		CPPUNIT_TEST(testContains);
-		CPPUNIT_TEST(testContainsFalse);
-		CPPUNIT_TEST(testContainsExact);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		StringTest() {}
-
-		void testGetLength() {
-			String testling("xyz$xyz");
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength());
-		}
-
-		void testGetLength_EncodedLength2() {
-			String testling("xyz\xC2\xA2xyz");
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength());
-		}
-
-		void testGetLength_EncodedLength3() {
-			String testling("xyz\xE2\x82\xACxyz");
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength());
-		}
-
-		void testGetLength_EncodedLength4() {
-			String testling("xyz\xf4\x8a\xaf\x8dxyz");
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), testling.getLength());
-		}
-
-		void testGetUnicodeCodePoints() {
-			String testling("$\xc2\xa2\xe2\x82\xac\xf4\x8a\xaf\x8d");
-			std::vector<unsigned int> points = testling.getUnicodeCodePoints();
-
-			CPPUNIT_ASSERT_EQUAL(0x24U, points[0]);
-			CPPUNIT_ASSERT_EQUAL(0xA2U, points[1]);
-			CPPUNIT_ASSERT_EQUAL(0x20ACU, points[2]);
-			CPPUNIT_ASSERT_EQUAL(0x10ABCDU, points[3]);
-		}
-
-		void testGetSplittedAtFirst() {
-			String testling("ab@cd@ef");
-
-			std::pair<String,String> result = testling.getSplittedAtFirst('@');
-			CPPUNIT_ASSERT_EQUAL(String("ab"), result.first);
-			CPPUNIT_ASSERT_EQUAL(String("cd@ef"), result.second);
-		}
-
-		void testGetSplittedAtFirst_CharacterAtEnd() {
-			String testling("ab@");
-
-			std::pair<String,String> result = testling.getSplittedAtFirst('@');
-			CPPUNIT_ASSERT_EQUAL(String("ab"), result.first);
-			CPPUNIT_ASSERT(result.second.isEmpty());
-		}
-
-		void testGetSplittedAtFirst_NoSuchCharacter() {
-			String testling("ab");
-
-			std::pair<String,String> result = testling.getSplittedAtFirst('@');
-			CPPUNIT_ASSERT_EQUAL(String("ab"), result.first);
-			CPPUNIT_ASSERT(result.second.isEmpty());
-		}
-
-		void testRemoveAll() {
-			String testling("ab c de");
-
-			testling.removeAll(' ');
-			
-			CPPUNIT_ASSERT_EQUAL(String("abcde"), testling);
-		}
-
-		void testRemoveAll_LastChar() {
-			String testling("abcde ");
-
-			testling.removeAll(' ');
-			
-			CPPUNIT_ASSERT_EQUAL(String("abcde"), testling);
-		}
-
-		void testRemoveAll_ConsecutiveChars() {
-			String testling("ab  cde");
-
-			testling.removeAll(' ');
-			
-			CPPUNIT_ASSERT_EQUAL(String("abcde"), testling);
-		}
-
-		void testReplaceAll() {
-			String testling("abcbd");
-
-			testling.replaceAll('b', "xyz");
-			
-			CPPUNIT_ASSERT_EQUAL(String("axyzcxyzd"), testling);
-		}
-
-		void testReplaceAll_LastChar() {
-			String testling("abc");
-
-			testling.replaceAll('c', "xyz");
-			
-			CPPUNIT_ASSERT_EQUAL(String("abxyz"), testling);
-		}
-
-		void testReplaceAll_ConsecutiveChars() {
-			String testling("abbc");
-
-			testling.replaceAll('b',"xyz");
-			
-			CPPUNIT_ASSERT_EQUAL(String("axyzxyzc"), testling);
-		}
-
-		void testReplaceAll_MatchingReplace() {
-			String testling("abc");
-
-			testling.replaceAll('b',"bbb");
-			
-			CPPUNIT_ASSERT_EQUAL(String("abbbc"), testling);
-		}
-
-		void testGetLowerCase() {
-			String testling("aBcD e");
-
-			CPPUNIT_ASSERT_EQUAL(String("abcd e"), testling.getLowerCase());
-		}
-
-		void testSplit() {
-			std::vector<String> result = String("abc def ghi").split(' ');
-
-			CPPUNIT_ASSERT_EQUAL(3, static_cast<int>(result.size()));
-			CPPUNIT_ASSERT_EQUAL(String("abc"), result[0]);
-			CPPUNIT_ASSERT_EQUAL(String("def"), result[1]);
-			CPPUNIT_ASSERT_EQUAL(String("ghi"), result[2]);
-		}
-
-		void testContains() {
-			CPPUNIT_ASSERT(String("abcde").contains(String("bcd")));
-		}
-
-		void testContainsFalse() {
-			CPPUNIT_ASSERT(!String("abcde").contains(String("abcdef")));
-		}
-
-		void testContainsExact() {
-			CPPUNIT_ASSERT(String("abcde").contains(String("abcde")));
-		}
-
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StringTest);
diff --git a/Swiften/Base/foreach.h b/Swiften/Base/foreach.h
deleted file mode 100644
index b2bee66..0000000
--- a/Swiften/Base/foreach.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef SWIFTEN_FOREACH_H
-#define SWIFTEN_FOREACH_H
-
-#include <boost/foreach.hpp>
-
-#undef foreach
-#define foreach BOOST_FOREACH
-
-#endif
diff --git a/Swiften/Base/sleep.cpp b/Swiften/Base/sleep.cpp
deleted file mode 100644
index 99d0fe6..0000000
--- a/Swiften/Base/sleep.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "Swiften/Base/sleep.h"
-
-#include <boost/thread.hpp>
-
-namespace Swift {
-
-void sleep(unsigned int msecs) {
-	boost::xtime xt;
-	boost::xtime_get(&xt, boost::TIME_UTC);
-	xt.nsec += msecs*1000000;
-	boost::thread::sleep(xt);
-}
-
-}
diff --git a/Swiften/Base/sleep.h b/Swiften/Base/sleep.h
deleted file mode 100644
index bcebc4c..0000000
--- a/Swiften/Base/sleep.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef SWIFTEN_sleep_H
-#define SWIFTEN_sleep_H
-
-namespace Swift {
-	void sleep(unsigned int msecs);
-}
-
-#endif
diff --git a/Swiften/Chat/ChatStateActionProvider.h b/Swiften/Chat/ChatStateActionProvider.h
deleted file mode 100644
index 82bed3f..0000000
--- a/Swiften/Chat/ChatStateActionProvider.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-
-namespace Swift {
-	class ChatState {
-		
-	};
-}
diff --git a/Swiften/Chat/ChatStateMessageSender.cpp b/Swiften/Chat/ChatStateMessageSender.cpp
deleted file mode 100644
index ad1495f..0000000
--- a/Swiften/Chat/ChatStateMessageSender.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "Swiften/Chat/ChatStateMessageSender.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/Client/StanzaChannel.h"
-
-namespace Swift {
-
-ChatStateMessageSender::ChatStateMessageSender(ChatStateNotifier* notifier, StanzaChannel* stanzaChannel, const JID& contact) : contact_(contact) {
-	notifier_ = notifier;
-	stanzaChannel_ = stanzaChannel;
-	notifier_->onChatStateChanged.connect(boost::bind(&ChatStateMessageSender::handleChatStateChanged, this, _1));
-}
-
-void ChatStateMessageSender::handleChatStateChanged(ChatState::ChatStateType state) {
-	boost::shared_ptr<Message> message(new Message());
-	message->setTo(contact_);
-	message->addPayload(boost::shared_ptr<Payload>(new ChatState(state)));
-	stanzaChannel_->sendMessage(message);
-}
-
-}
diff --git a/Swiften/Chat/ChatStateMessageSender.h b/Swiften/Chat/ChatStateMessageSender.h
deleted file mode 100644
index aff0791..0000000
--- a/Swiften/Chat/ChatStateMessageSender.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include "Swiften/Chat/ChatStateNotifier.h"
-#include "Swiften/Elements/ChatState.h"
-#include "Swiften/JID/JID.h"
-
-namespace Swift {
-	class StanzaChannel;
-	class ChatStateMessageSender {
-		public:
-			ChatStateMessageSender(ChatStateNotifier* notifier, StanzaChannel* stanzaChannel, const JID& contact);
-			void setContact(const JID& contact) {contact_ = contact;};
-
-		private:
-			void handleChatStateChanged(ChatState::ChatStateType state);
-			ChatStateNotifier* notifier_;
-			StanzaChannel* stanzaChannel_;
-			JID contact_;
-	};
-}
diff --git a/Swiften/Chat/ChatStateNotifier.cpp b/Swiften/Chat/ChatStateNotifier.cpp
deleted file mode 100644
index 7c6560f..0000000
--- a/Swiften/Chat/ChatStateNotifier.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "Swiften/Chat/ChatStateNotifier.h"
-
-namespace Swift {
-
-ChatStateNotifier::ChatStateNotifier() {
-	contactHas85Caps_ = false;
-	isInConversation_ = false;
-	contactHasSentActive_ = false;
-	userIsTyping_ = false;
-}
-
-void ChatStateNotifier::setContactHas85Caps(bool hasCaps) {
-	contactHas85Caps_ = hasCaps;
-}
-
-void ChatStateNotifier::setUserIsTyping() {
-	if (contactShouldReceiveStates() && !userIsTyping_) {
-		userIsTyping_ = true;
-		onChatStateChanged(ChatState::Composing);
-	}
-}
-
-void ChatStateNotifier::userSentMessage() {
-	userIsTyping_ = false;
-}
-
-void ChatStateNotifier::userCancelledNewMessage() {
-	if (userIsTyping_) {
-		userIsTyping_ = false;
-		onChatStateChanged(ChatState::Active);
-	}
-}
-
-void ChatStateNotifier::receivedMessageFromContact(bool hasActiveElement) {
-	isInConversation_ = true;
-	contactHasSentActive_ = hasActiveElement;
-}
-
-bool ChatStateNotifier::contactShouldReceiveStates() {
-	/* So, yes, the XEP says to look at caps, but it also says that once you've
-	   heard from the contact, the active state overrides this.*/
-	return contactHasSentActive_ || (contactHas85Caps_ && !isInConversation_);;
-}
-
-}
diff --git a/Swiften/Chat/ChatStateNotifier.h b/Swiften/Chat/ChatStateNotifier.h
deleted file mode 100644
index 0ef4255..0000000
--- a/Swiften/Chat/ChatStateNotifier.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-
-#include <boost/signals.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/ChatState.h"
-
-namespace Swift {
-	class ChatStateNotifier {
-		public:
-			ChatStateNotifier();
-			void setContactHas85Caps(bool hasCaps);
-			void setUserIsTyping();
-			void userSentMessage();
-			void userCancelledNewMessage();
-			void receivedMessageFromContact(bool hasActiveElement);
-			bool contactShouldReceiveStates();
-
-			boost::signal<void (ChatState::ChatStateType)> onChatStateChanged;
-		private:
-			bool contactHas85Caps_;
-			bool isInConversation_;
-			bool contactHasSentActive_;
-			bool userIsTyping_;
-	};
-}
diff --git a/Swiften/Chat/ChatStateTracker.cpp b/Swiften/Chat/ChatStateTracker.cpp
deleted file mode 100644
index 3076845..0000000
--- a/Swiften/Chat/ChatStateTracker.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "Swiften/Chat/ChatStateTracker.h"
-
-namespace Swift {
-ChatStateTracker::ChatStateTracker() {
-	currentState_ = ChatState::Gone;
-}
-
-void ChatStateTracker::handleMessageReceived(boost::shared_ptr<Message> message) {
-	boost::shared_ptr<ChatState> statePayload = message->getPayload<ChatState>();
-	if (statePayload) {
-		changeState(statePayload->getChatState());;
-	}
-}
-
-void ChatStateTracker::handlePresenceChange(boost::shared_ptr<Presence> newPresence, boost::shared_ptr<Presence>) {
-	if (newPresence->getType() == Presence::Unavailable) {
-		onChatStateChange(ChatState::Gone);
-	}
-}
-
-void ChatStateTracker::changeState(ChatState::ChatStateType state) {
-	if (state != currentState_) {
-		currentState_ = state;
-		onChatStateChange(state);
-	}
-}
-
-}
diff --git a/Swiften/Chat/ChatStateTracker.h b/Swiften/Chat/ChatStateTracker.h
deleted file mode 100644
index e66bbae..0000000
--- a/Swiften/Chat/ChatStateTracker.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/Message.h"
-#include "Swiften/Elements/Presence.h"
-#include "Swiften/Elements/ChatState.h"
-
-namespace Swift {
-	class ChatStateTracker {
-		public:
-			ChatStateTracker();
-			void handleMessageReceived(boost::shared_ptr<Message> message);
-			void handlePresenceChange(boost::shared_ptr<Presence> newPresence, boost::shared_ptr<Presence> oldPresence);
-			boost::signal<void (ChatState::ChatStateType)> onChatStateChange;
-		private:
-			void changeState(ChatState::ChatStateType state);
-			ChatState::ChatStateType currentState_;
-	};
-}
diff --git a/Swiften/Chat/UnitTest/ChatStateNotifierTest.cpp b/Swiften/Chat/UnitTest/ChatStateNotifierTest.cpp
deleted file mode 100644
index 44ec9d8..0000000
--- a/Swiften/Chat/UnitTest/ChatStateNotifierTest.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/bind.hpp>
-
-#include "Swiften/Chat/ChatStateNotifier.h"
-
-using namespace Swift;
-
-
-class ChatStateMonitor {
-public:
-	ChatStateMonitor(ChatStateNotifier* notifier) {
-		notifier_ = notifier;
-		composingCallCount = 0;
-		activeCallCount = 0;
-		notifier->onChatStateChanged.connect(boost::bind(&ChatStateMonitor::handleChatStateChanged, this, _1));
-	};
-
-	int composingCallCount;
-	int activeCallCount;
-	ChatState::ChatStateType currentState;
-
-private:
-	void handleChatStateChanged(ChatState::ChatStateType newState) {
-		switch (newState) {
-			case ChatState::Composing:
-				composingCallCount++;
-				break;
-			case ChatState::Active:
-				activeCallCount++;
-				break;
-			default:
-				break;
-			}
-		currentState = newState;
-	};
-
-	ChatStateNotifier* notifier_;
-};
-
-class ChatStateNotifierTest : public CppUnit::TestFixture {
-	CPPUNIT_TEST_SUITE(ChatStateNotifierTest);
-	CPPUNIT_TEST(testStartTypingReply_CapsNotIncluded);
-	CPPUNIT_TEST(testStartTypingReply_CapsIncluded);
-	CPPUNIT_TEST(testCancelledNewMessage);
-	CPPUNIT_TEST(testContinueTypingReply_CapsIncluded);
-	CPPUNIT_TEST(testContactShouldReceiveStates_CapsOnly);
-	CPPUNIT_TEST(testContactShouldReceiveStates_CapsNorActive);
-	CPPUNIT_TEST(testContactShouldReceiveStates_ActiveOverrideOn);	
-	CPPUNIT_TEST(testContactShouldReceiveStates_ActiveOverrideOff);
-	CPPUNIT_TEST_SUITE_END();
-	
-private:
-	ChatStateNotifier* notifier_;
-	ChatStateMonitor* monitor_;
-	
-public:
-	void setUp() {
-		notifier_ = new ChatStateNotifier();
-		monitor_ = new ChatStateMonitor(notifier_);
-	}
-	
-	void tearDown() {
-		delete notifier_;
-		delete monitor_;
-	}
-	
-	void testStartTypingReply_CapsNotIncluded() {
-		notifier_->setContactHas85Caps(false);
-		notifier_->setUserIsTyping();
-		CPPUNIT_ASSERT_EQUAL(0, monitor_->composingCallCount);
-	}
-
-	void testSendTwoMessages() {
-		notifier_->setContactHas85Caps(true);
-		notifier_->setUserIsTyping();
-		notifier_->userSentMessage();
-		notifier_->setUserIsTyping();
-		notifier_->userSentMessage();
-		CPPUNIT_ASSERT_EQUAL(2, monitor_->composingCallCount);
-	}
-
-	void testCancelledNewMessage() {
-		notifier_->setContactHas85Caps(true);
-		notifier_->setUserIsTyping();
-		notifier_->userCancelledNewMessage();
-		CPPUNIT_ASSERT_EQUAL(1, monitor_->composingCallCount);
-		CPPUNIT_ASSERT_EQUAL(1, monitor_->activeCallCount);
-		CPPUNIT_ASSERT_EQUAL(ChatState::Active, monitor_->currentState);
-	}
-
-
-	void testContactShouldReceiveStates_CapsOnly() {
-		notifier_->setContactHas85Caps(true);
-		CPPUNIT_ASSERT_EQUAL(true, notifier_->contactShouldReceiveStates());
-	}
-
-	void testContactShouldReceiveStates_CapsNorActive() {
-		CPPUNIT_ASSERT_EQUAL(false, notifier_->contactShouldReceiveStates());
-	}
-
-	void testContactShouldReceiveStates_ActiveOverrideOn() {
-		notifier_->setContactHas85Caps(false);
-		notifier_->receivedMessageFromContact(true);
-		CPPUNIT_ASSERT_EQUAL(true, notifier_->contactShouldReceiveStates());
-	}
-
-	void testContactShouldReceiveStates_ActiveOverrideOff() {
-		notifier_->setContactHas85Caps(true);
-		notifier_->receivedMessageFromContact(false);
-		CPPUNIT_ASSERT_EQUAL(false, notifier_->contactShouldReceiveStates());
-	}
-
-
-	void testStartTypingReply_CapsIncluded() {
-		notifier_->setContactHas85Caps(true);
-		notifier_->setUserIsTyping();
-		CPPUNIT_ASSERT_EQUAL(1, monitor_->composingCallCount);
-	}
-
-	void testContinueTypingReply_CapsIncluded() {
-		notifier_->setContactHas85Caps(true);
-		notifier_->setUserIsTyping();
-		notifier_->setUserIsTyping();
-		notifier_->setUserIsTyping();
-		CPPUNIT_ASSERT_EQUAL(1, monitor_->composingCallCount);
-	}
-
-	
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ChatStateNotifierTest);
diff --git a/Swiften/Client/Client.cpp b/Swiften/Client/Client.cpp
deleted file mode 100644
index c704248..0000000
--- a/Swiften/Client/Client.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-#include "Swiften/Client/Client.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/Network/MainBoostIOServiceThread.h"
-#include "Swiften/Network/BoostIOServiceThread.h"
-#include "Swiften/Client/ClientSession.h"
-#include "Swiften/StreamStack/PlatformTLSLayerFactory.h"
-#include "Swiften/Network/Connector.h"
-#include "Swiften/Network/BoostConnectionFactory.h"
-#include "Swiften/Network/BoostTimerFactory.h"
-#include "Swiften/TLS/PKCS12Certificate.h"
-#include "Swiften/Session/BasicSessionStream.h"
-
-namespace Swift {
-
-Client::Client(const JID& jid, const String& password) :
-		IQRouter(this), jid_(jid), password_(password) {
-	connectionFactory_ = new BoostConnectionFactory(&MainBoostIOServiceThread::getInstance().getIOService());
-	timerFactory_ = new BoostTimerFactory(&MainBoostIOServiceThread::getInstance().getIOService());
-	tlsLayerFactory_ = new PlatformTLSLayerFactory();
-}
-
-Client::~Client() {
-	if (session_ || connection_) {
-		std::cerr << "Warning: Client not disconnected properly" << std::endl;
-	}
-	delete tlsLayerFactory_;
-	delete timerFactory_;
-	delete connectionFactory_;
-}
-
-bool Client::isAvailable() {
-	return session_;
-}
-
-void Client::connect() {
-	assert(!connector_);
-	connector_ = boost::shared_ptr<Connector>(new Connector(jid_.getDomain(), &resolver_, connectionFactory_, timerFactory_));
-	connector_->onConnectFinished.connect(boost::bind(&Client::handleConnectorFinished, this, _1));
-	connector_->setTimeoutMilliseconds(60*1000);
-	connector_->start();
-}
-
-void Client::handleConnectorFinished(boost::shared_ptr<Connection> connection) {
-	// TODO: Add domain name resolver error
-	connector_.reset();
-	if (!connection) {
-		onError(ClientError::ConnectionError);
-	}
-	else {
-		assert(!connection_);
-		connection_ = connection;
-
-		assert(!sessionStream_);
-		sessionStream_ = boost::shared_ptr<BasicSessionStream>(new BasicSessionStream(connection_, &payloadParserFactories_, &payloadSerializers_, tlsLayerFactory_, timerFactory_));
-		if (!certificate_.isEmpty()) {
-			sessionStream_->setTLSCertificate(PKCS12Certificate(certificate_, password_));
-		}
-		sessionStream_->onDataRead.connect(boost::bind(&Client::handleDataRead, this, _1));
-		sessionStream_->onDataWritten.connect(boost::bind(&Client::handleDataWritten, this, _1));
-		sessionStream_->initialize();
-
-		session_ = ClientSession::create(jid_, sessionStream_);
-		session_->onInitialized.connect(boost::bind(boost::ref(onConnected)));
-		session_->onFinished.connect(boost::bind(&Client::handleSessionFinished, this, _1));
-		session_->onNeedCredentials.connect(boost::bind(&Client::handleNeedCredentials, this));
-		session_->onElementReceived.connect(boost::bind(&Client::handleElement, this, _1));
-		session_->start();
-	}
-}
-
-void Client::disconnect() {
-	if (session_) {
-		session_->finish();
-	}
-	else {
-		closeConnection();
-	}
-}
-
-void Client::closeConnection() {
-	if (sessionStream_) {
-		sessionStream_.reset();
-	}
-	if (connection_) {
-		connection_->disconnect();
-		connection_.reset();
-	}
-}
-
-void Client::send(boost::shared_ptr<Stanza> stanza) {
-	if (!isAvailable()) {
-		std::cerr << "Warning: Client: Trying to send a stanza while disconnected." << std::endl;
-		return;
-	}
-	session_->sendElement(stanza);
-}
-
-void Client::sendIQ(boost::shared_ptr<IQ> iq) {
-	send(iq);
-}
-
-void Client::sendMessage(boost::shared_ptr<Message> message) {
-	send(message);
-}
-
-void Client::sendPresence(boost::shared_ptr<Presence> presence) {
-	send(presence);
-}
-
-String Client::getNewIQID() {
-	return idGenerator_.generateID();
-}
-
-void Client::handleElement(boost::shared_ptr<Element> element) {
-	boost::shared_ptr<Message> message = boost::dynamic_pointer_cast<Message>(element);
-	if (message) {
-		onMessageReceived(message);
-		return;
-	}
-
-	boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(element);
-	if (presence) {
-		onPresenceReceived(presence);
-		return;
-	}
-
-	boost::shared_ptr<IQ> iq = boost::dynamic_pointer_cast<IQ>(element);
-	if (iq) {
-		onIQReceived(iq);
-		return;
-	}
-}
-
-void Client::setCertificate(const String& certificate) {
-	certificate_ = certificate;
-}
-
-void Client::handleSessionFinished(boost::shared_ptr<Error> error) {
-	session_.reset();
-	closeConnection();
-	if (error) {
-		ClientError clientError;
-		if (boost::shared_ptr<ClientSession::Error> actualError = boost::dynamic_pointer_cast<ClientSession::Error>(error)) {
-			switch(actualError->type) {
-				case ClientSession::Error::AuthenticationFailedError:
-					clientError = ClientError(ClientError::AuthenticationFailedError);
-					break;
-				case ClientSession::Error::CompressionFailedError:
-					clientError = ClientError(ClientError::CompressionFailedError);
-					break;
-				case ClientSession::Error::ServerVerificationFailedError:
-					clientError = ClientError(ClientError::ServerVerificationFailedError);
-					break;
-				case ClientSession::Error::NoSupportedAuthMechanismsError:
-					clientError = ClientError(ClientError::NoSupportedAuthMechanismsError);
-					break;
-				case ClientSession::Error::UnexpectedElementError:
-					clientError = ClientError(ClientError::UnexpectedElementError);
-					break;
-				case ClientSession::Error::ResourceBindError:
-					clientError = ClientError(ClientError::ResourceBindError);
-					break;
-				case ClientSession::Error::SessionStartError:
-					clientError = ClientError(ClientError::SessionStartError);
-					break;
-				case ClientSession::Error::TLSError:
-					clientError = ClientError(ClientError::TLSError);
-					break;
-				case ClientSession::Error::TLSClientCertificateError:
-					clientError = ClientError(ClientError::ClientCertificateError);
-					break;
-			}
-		}
-		else if (boost::shared_ptr<SessionStream::Error> actualError = boost::dynamic_pointer_cast<SessionStream::Error>(error)) {
-			switch(actualError->type) {
-				case SessionStream::Error::ParseError:
-					clientError = ClientError(ClientError::XMLError);
-					break;
-				case SessionStream::Error::TLSError:
-					clientError = ClientError(ClientError::TLSError);
-					break;
-				case SessionStream::Error::InvalidTLSCertificateError:
-					clientError = ClientError(ClientError::ClientCertificateLoadError);
-					break;
-				case SessionStream::Error::ConnectionReadError:
-					clientError = ClientError(ClientError::ConnectionReadError);
-					break;
-				case SessionStream::Error::ConnectionWriteError:
-					clientError = ClientError(ClientError::ConnectionWriteError);
-					break;
-			}
-		}
-		onError(clientError);
-	}
-}
-
-void Client::handleNeedCredentials() {
-	assert(session_);
-	session_->sendCredentials(password_);
-}
-
-void Client::handleDataRead(const String& data) {
-	onDataRead(data);
-}
-
-void Client::handleDataWritten(const String& data) {
-	onDataWritten(data);
-}
-
-}
diff --git a/Swiften/Client/Client.h b/Swiften/Client/Client.h
deleted file mode 100644
index 444c136..0000000
--- a/Swiften/Client/Client.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#pragma once
-
-#include <boost/signals.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Network/PlatformDomainNameResolver.h"
-#include "Swiften/Base/Error.h"
-#include "Swiften/Client/ClientSession.h"
-#include "Swiften/Client/ClientError.h"
-#include "Swiften/Elements/Presence.h"
-#include "Swiften/Elements/Message.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/IDGenerator.h"
-#include "Swiften/Client/StanzaChannel.h"
-#include "Swiften/Queries/IQRouter.h"
-#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h"
-#include "Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h"
-
-namespace Swift {
-	class TLSLayerFactory;
-	class ConnectionFactory;
-	class TimerFactory;
-	class ClientSession;
-	class BasicSessionStream;
-	class Connector;
-
-	class Client : public StanzaChannel, public IQRouter, public boost::bsignals::trackable {
-		public:
-			Client(const JID& jid, const String& password);
-			~Client();
-
-			void setCertificate(const String& certificate);
-
-			void connect();
-			void disconnect();
-			
-			bool isAvailable();
-
-			virtual void sendIQ(boost::shared_ptr<IQ>);
-			virtual void sendMessage(boost::shared_ptr<Message>);
-			virtual void sendPresence(boost::shared_ptr<Presence>);
-
-		public:
-			boost::signal<void (const ClientError&)> onError;
-			boost::signal<void ()> onConnected;
-			boost::signal<void (const String&)> onDataRead;
-			boost::signal<void (const String&)> onDataWritten;
-
-		private:
-			void handleConnectorFinished(boost::shared_ptr<Connection>);
-			void send(boost::shared_ptr<Stanza>);
-			virtual String getNewIQID();
-			void handleElement(boost::shared_ptr<Element>);
-			void handleSessionFinished(boost::shared_ptr<Error>);
-			void handleNeedCredentials();
-			void handleDataRead(const String&);
-			void handleDataWritten(const String&);
-
-			void closeConnection();
-
-		private:
-			PlatformDomainNameResolver resolver_;
-			JID jid_;
-			String password_;
-			IDGenerator idGenerator_;
-			boost::shared_ptr<Connector> connector_;
-			ConnectionFactory* connectionFactory_;
-			TimerFactory* timerFactory_;
-			TLSLayerFactory* tlsLayerFactory_;
-			FullPayloadParserFactoryCollection payloadParserFactories_;
-			FullPayloadSerializerCollection payloadSerializers_;
-			boost::shared_ptr<Connection> connection_;
-			boost::shared_ptr<BasicSessionStream> sessionStream_;
-			boost::shared_ptr<ClientSession> session_;
-			String certificate_;
-	};
-}
diff --git a/Swiften/Client/ClientError.h b/Swiften/Client/ClientError.h
deleted file mode 100644
index a0557d4..0000000
--- a/Swiften/Client/ClientError.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-namespace Swift {
-	class ClientError {
-		public:
-			enum Type {
-				UnknownError,
-				DomainNameResolveError,
-				ConnectionError,
-				ConnectionReadError,
-				ConnectionWriteError,
-				XMLError,
-				AuthenticationFailedError,
-				CompressionFailedError,
-				ServerVerificationFailedError,
-				NoSupportedAuthMechanismsError,
-				UnexpectedElementError,
-				ResourceBindError,
-				SessionStartError,
-				TLSError,
-				ClientCertificateLoadError,
-				ClientCertificateError
-			};
-
-			ClientError(Type type = UnknownError) : type_(type) {}
-
-			Type getType() const { return type_; }
-
-		private:
-			Type type_;
-	};
-}
diff --git a/Swiften/Client/ClientSession.cpp b/Swiften/Client/ClientSession.cpp
deleted file mode 100644
index 16bda40..0000000
--- a/Swiften/Client/ClientSession.cpp
+++ /dev/null
@@ -1,276 +0,0 @@
-#include "Swiften/Client/ClientSession.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/Elements/ProtocolHeader.h"
-#include "Swiften/Elements/StreamFeatures.h"
-#include "Swiften/Elements/StartTLSRequest.h"
-#include "Swiften/Elements/StartTLSFailure.h"
-#include "Swiften/Elements/TLSProceed.h"
-#include "Swiften/Elements/AuthRequest.h"
-#include "Swiften/Elements/AuthSuccess.h"
-#include "Swiften/Elements/AuthFailure.h"
-#include "Swiften/Elements/AuthChallenge.h"
-#include "Swiften/Elements/AuthResponse.h"
-#include "Swiften/Elements/Compressed.h"
-#include "Swiften/Elements/CompressFailure.h"
-#include "Swiften/Elements/CompressRequest.h"
-#include "Swiften/Elements/StartSession.h"
-#include "Swiften/Elements/IQ.h"
-#include "Swiften/Elements/ResourceBind.h"
-#include "Swiften/SASL/PLAINClientAuthenticator.h"
-#include "Swiften/SASL/SCRAMSHA1ClientAuthenticator.h"
-#include "Swiften/Session/SessionStream.h"
-
-namespace Swift {
-
-ClientSession::ClientSession(
-		const JID& jid, 
-		boost::shared_ptr<SessionStream> stream) :
-			localJID(jid),	
-			state(Initial), 
-			stream(stream),
-			needSessionStart(false),
-			authenticator(NULL) {
-}
-
-ClientSession::~ClientSession() {
-}
-
-void ClientSession::start() {
-	stream->onStreamStartReceived.connect(boost::bind(&ClientSession::handleStreamStart, shared_from_this(), _1));
-	stream->onElementReceived.connect(boost::bind(&ClientSession::handleElement, shared_from_this(), _1));
-	stream->onError.connect(boost::bind(&ClientSession::handleStreamError, shared_from_this(), _1));
-	stream->onTLSEncrypted.connect(boost::bind(&ClientSession::handleTLSEncrypted, shared_from_this()));
-
-	assert(state == Initial);
-	state = WaitingForStreamStart;
-	sendStreamHeader();
-}
-
-void ClientSession::sendStreamHeader() {
-	ProtocolHeader header;
-	header.setTo(getRemoteJID());
-	stream->writeHeader(header);
-}
-
-void ClientSession::sendElement(boost::shared_ptr<Element> element) {
-	stream->writeElement(element);
-}
-
-void ClientSession::handleStreamStart(const ProtocolHeader&) {
-	checkState(WaitingForStreamStart);
-	state = Negotiating;
-}
-
-void ClientSession::handleElement(boost::shared_ptr<Element> element) {
-	if (getState() == Initialized) {
-		onElementReceived(element);
-	}
-	else if (StreamFeatures* streamFeatures = dynamic_cast<StreamFeatures*>(element.get())) {
-		if (!checkState(Negotiating)) {
-			return;
-		}
-
-		if (streamFeatures->hasStartTLS() && stream->supportsTLSEncryption()) {
-			state = WaitingForEncrypt;
-			stream->writeElement(boost::shared_ptr<StartTLSRequest>(new StartTLSRequest()));
-		}
-		else if (streamFeatures->hasCompressionMethod("zlib")) {
-			state = Compressing;
-			stream->writeElement(boost::shared_ptr<CompressRequest>(new CompressRequest("zlib")));
-		}
-		else if (streamFeatures->hasAuthenticationMechanisms()) {
-			if (stream->hasTLSCertificate()) {
-				if (streamFeatures->hasAuthenticationMechanism("EXTERNAL")) {
-					state = Authenticating;
-					stream->writeElement(boost::shared_ptr<Element>(new AuthRequest("EXTERNAL", "")));
-				}
-				else {
-					finishSession(Error::TLSClientCertificateError);
-				}
-			}
-			else if (streamFeatures->hasAuthenticationMechanism("SCRAM-SHA-1")) {
-				// FIXME: Use a real nonce
-				authenticator = new SCRAMSHA1ClientAuthenticator("ClientNonce");
-				state = WaitingForCredentials;
-				onNeedCredentials();
-			}
-			else if (streamFeatures->hasAuthenticationMechanism("PLAIN")) {
-				authenticator = new PLAINClientAuthenticator();
-				state = WaitingForCredentials;
-				onNeedCredentials();
-			}
-			else {
-				finishSession(Error::NoSupportedAuthMechanismsError);
-			}
-		}
-		else {
-			// Start the session
-			stream->setWhitespacePingEnabled(true);
-
-			if (streamFeatures->hasSession()) {
-				needSessionStart = true;
-			}
-
-			if (streamFeatures->hasResourceBind()) {
-				state = BindingResource;
-				boost::shared_ptr<ResourceBind> resourceBind(new ResourceBind());
-				if (!localJID.getResource().isEmpty()) {
-					resourceBind->setResource(localJID.getResource());
-				}
-				stream->writeElement(IQ::createRequest(IQ::Set, JID(), "session-bind", resourceBind));
-			}
-			else if (needSessionStart) {
-				sendSessionStart();
-			}
-			else {
-				state = Initialized;
-				onInitialized();
-			}
-		}
-	}
-	else if (boost::dynamic_pointer_cast<Compressed>(element)) {
-		checkState(Compressing);
-		state = WaitingForStreamStart;
-		stream->addZLibCompression();
-		stream->resetXMPPParser();
-		sendStreamHeader();
-	}
-	else if (boost::dynamic_pointer_cast<CompressFailure>(element)) {
-		finishSession(Error::CompressionFailedError);
-	}
-	else if (AuthChallenge* challenge = dynamic_cast<AuthChallenge*>(element.get())) {
-		checkState(Authenticating);
-		assert(authenticator);
-		if (authenticator->setChallenge(challenge->getValue())) {
-			stream->writeElement(boost::shared_ptr<AuthResponse>(new AuthResponse(authenticator->getResponse())));
-		}
-		else {
-			finishSession(Error::AuthenticationFailedError);
-		}
-	}
-	else if (AuthSuccess* authSuccess = dynamic_cast<AuthSuccess*>(element.get())) {
-		checkState(Authenticating);
-		if (authenticator && !authenticator->setChallenge(authSuccess->getValue())) {
-			finishSession(Error::ServerVerificationFailedError);
-		}
-		else {
-			state = WaitingForStreamStart;
-			delete authenticator;
-			authenticator = NULL;
-			stream->resetXMPPParser();
-			sendStreamHeader();
-		}
-	}
-	else if (dynamic_cast<AuthFailure*>(element.get())) {
-		delete authenticator;
-		authenticator = NULL;
-		finishSession(Error::AuthenticationFailedError);
-	}
-	else if (dynamic_cast<TLSProceed*>(element.get())) {
-		checkState(WaitingForEncrypt);
-		state = Encrypting;
-		stream->addTLSEncryption();
-	}
-	else if (dynamic_cast<StartTLSFailure*>(element.get())) {
-		finishSession(Error::TLSError);
-	}
-	else if (IQ* iq = dynamic_cast<IQ*>(element.get())) {
-		if (state == BindingResource) {
-			boost::shared_ptr<ResourceBind> resourceBind(iq->getPayload<ResourceBind>());
-			if (iq->getType() == IQ::Error && iq->getID() == "session-bind") {
-				finishSession(Error::ResourceBindError);
-			}
-			else if (!resourceBind) {
-				finishSession(Error::UnexpectedElementError);
-			}
-			else if (iq->getType() == IQ::Result) {
-				localJID = resourceBind->getJID();
-				if (!localJID.isValid()) {
-					finishSession(Error::ResourceBindError);
-				}
-				if (needSessionStart) {
-					sendSessionStart();
-				}
-				else {
-					state = Initialized;
-				}
-			}
-			else {
-				finishSession(Error::UnexpectedElementError);
-			}
-		}
-		else if (state == StartingSession) {
-			if (iq->getType() == IQ::Result) {
-				state = Initialized;
-				onInitialized();
-			}
-			else if (iq->getType() == IQ::Error) {
-				finishSession(Error::SessionStartError);
-			}
-			else {
-				finishSession(Error::UnexpectedElementError);
-			}
-		}
-		else {
-			finishSession(Error::UnexpectedElementError);
-		}
-	}
-	else {
-		// FIXME Not correct?
-		state = Initialized;
-		onInitialized();
-	}
-}
-
-void ClientSession::sendSessionStart() {
-	state = StartingSession;
-	stream->writeElement(IQ::createRequest(IQ::Set, JID(), "session-start", boost::shared_ptr<StartSession>(new StartSession())));
-}
-
-bool ClientSession::checkState(State state) {
-	if (state != state) {
-		finishSession(Error::UnexpectedElementError);
-		return false;
-	}
-	return true;
-}
-
-void ClientSession::sendCredentials(const String& password) {
-	assert(WaitingForCredentials);
-	state = Authenticating;
-	authenticator->setCredentials(localJID.getNode(), password);
-	stream->writeElement(boost::shared_ptr<AuthRequest>(new AuthRequest(authenticator->getName(), authenticator->getResponse())));
-}
-
-void ClientSession::handleTLSEncrypted() {
-	checkState(WaitingForEncrypt);
-	state = WaitingForStreamStart;
-	stream->resetXMPPParser();
-	sendStreamHeader();
-}
-
-void ClientSession::handleStreamError(boost::shared_ptr<Swift::Error> error) {
-	finishSession(error);
-}
-
-void ClientSession::finish() {
-	if (stream->isAvailable()) {
-		stream->writeFooter();
-	}
-	finishSession(boost::shared_ptr<Error>());
-}
-
-void ClientSession::finishSession(Error::Type error) {
-	finishSession(boost::shared_ptr<Swift::ClientSession::Error>(new Swift::ClientSession::Error(error)));
-}
-
-void ClientSession::finishSession(boost::shared_ptr<Swift::Error> error) {
-	state = Finished;
-	stream->setWhitespacePingEnabled(false);
-	onFinished(error);
-}
-
-
-}
diff --git a/Swiften/Client/ClientSession.h b/Swiften/Client/ClientSession.h
deleted file mode 100644
index 685672e..0000000
--- a/Swiften/Client/ClientSession.h
+++ /dev/null
@@ -1,100 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "Swiften/Base/Error.h"
-#include "Swiften/Session/SessionStream.h"
-#include "Swiften/Session/BasicSessionStream.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class ClientAuthenticator;
-
-	class ClientSession : public boost::enable_shared_from_this<ClientSession> {
-		public:
-			enum State {
-				Initial,
-				WaitingForStreamStart,
-				Negotiating,
-				Compressing,
-				WaitingForEncrypt,
-				Encrypting,
-				WaitingForCredentials,
-				Authenticating,
-				BindingResource,
-				StartingSession,
-				Initialized,
-				Finished
-			};
-
-			struct Error : public Swift::Error {
-				enum Type {
-					AuthenticationFailedError,
-					CompressionFailedError,
-					ServerVerificationFailedError,
-					NoSupportedAuthMechanismsError,
-					UnexpectedElementError,
-					ResourceBindError,
-					SessionStartError,
-					TLSClientCertificateError,
-					TLSError,
-				} type;
-				Error(Type type) : type(type) {}
-			};
-
-			~ClientSession();
-			static boost::shared_ptr<ClientSession> create(const JID& jid, boost::shared_ptr<SessionStream> stream) {
-				return boost::shared_ptr<ClientSession>(new ClientSession(jid, stream));
-			}
-
-			State getState() const {
-				return state;
-			}
-
-			void start();
-			void finish();
-
-			void sendCredentials(const String& password);
-			void sendElement(boost::shared_ptr<Element> element);
-
-		public:
-			boost::signal<void ()> onNeedCredentials;
-			boost::signal<void ()> onInitialized;
-			boost::signal<void (boost::shared_ptr<Swift::Error>)> onFinished;
-			boost::signal<void (boost::shared_ptr<Element>)> onElementReceived;
-		
-		private:
-			ClientSession(
-					const JID& jid, 
-					boost::shared_ptr<SessionStream>);
-
-			void finishSession(Error::Type error);
-			void finishSession(boost::shared_ptr<Swift::Error> error);
-
-			JID getRemoteJID() const {
-				return JID("", localJID.getDomain());
-			}
-
-			void sendStreamHeader();
-			void sendSessionStart();
-
-			void handleElement(boost::shared_ptr<Element>);
-			void handleStreamStart(const ProtocolHeader&);
-			void handleStreamError(boost::shared_ptr<Swift::Error>);
-
-			void handleTLSEncrypted();
-
-			bool checkState(State);
-
-		private:
-			JID localJID;
-			State state;
-			boost::shared_ptr<SessionStream> stream;
-			bool needSessionStart;
-			ClientAuthenticator* authenticator;
-	};
-}
diff --git a/Swiften/Client/ClientXMLTracer.h b/Swiften/Client/ClientXMLTracer.h
deleted file mode 100644
index 85224c8..0000000
--- a/Swiften/Client/ClientXMLTracer.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-
-#include "Swiften/Client/Client.h"
-
-namespace Swift {
-	class ClientXMLTracer {
-		public:
-			ClientXMLTracer(Client* client) {
-				client->onDataRead.connect(boost::bind(&ClientXMLTracer::printData, '<', _1));
-				client->onDataWritten.connect(boost::bind(&ClientXMLTracer::printData, '>', _1));
-			}
-
-		private:
-			static void printData(char direction, const String& data) {
-				printLine(direction);
-				std::cerr << data << std::endl;
-			}
-
-			static void printLine(char c) {
-				for (unsigned int i = 0; i < 80; ++i) {
-					std::cerr << c;
-				}
-				std::cerr << std::endl;
-			}
-	};
-}
diff --git a/Swiften/Client/DummyStanzaChannel.h b/Swiften/Client/DummyStanzaChannel.h
deleted file mode 100644
index d618167..0000000
--- a/Swiften/Client/DummyStanzaChannel.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#pragma once
-
-#include <vector>
-
-#include "Swiften/Client/StanzaChannel.h"
-
-namespace Swift {
-	class DummyStanzaChannel : public StanzaChannel {
-		public:
-			DummyStanzaChannel() {}
-
-			virtual void sendStanza(boost::shared_ptr<Stanza> stanza) {
-				sentStanzas.push_back(stanza);
-			}
-
-			virtual void sendIQ(boost::shared_ptr<IQ> iq) {
-				sentStanzas.push_back(iq);
-			}
-
-			virtual void sendMessage(boost::shared_ptr<Message> message) {
-				sentStanzas.push_back(message);
-			}
-
-			virtual void sendPresence(boost::shared_ptr<Presence> presence) {
-				sentStanzas.push_back(presence);
-			}
-
-			virtual String getNewIQID() {
-				return "test-id";
-			}
-			
-			virtual bool isAvailable() {
-				return true;
-			}
-
-			std::vector<boost::shared_ptr<Stanza> > sentStanzas;
-	};
-}
diff --git a/Swiften/Client/StanzaChannel.h b/Swiften/Client/StanzaChannel.h
deleted file mode 100644
index a0e291d..0000000
--- a/Swiften/Client/StanzaChannel.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Queries/IQChannel.h"
-#include "Swiften/Elements/Message.h"
-#include "Swiften/Elements/Presence.h"
-
-namespace Swift {
-	class StanzaChannel : public IQChannel {
-		public:
-			virtual void sendMessage(boost::shared_ptr<Message>) = 0;
-			virtual void sendPresence(boost::shared_ptr<Presence>) = 0;
-			virtual bool isAvailable() = 0;
-
-			boost::signal<void (boost::shared_ptr<Message>)> onMessageReceived;
-			boost::signal<void (boost::shared_ptr<Presence>) > onPresenceReceived;
-	};
-}
diff --git a/Swiften/Client/UnitTest/ClientSessionTest.cpp b/Swiften/Client/UnitTest/ClientSessionTest.cpp
deleted file mode 100644
index e035ba3..0000000
--- a/Swiften/Client/UnitTest/ClientSessionTest.cpp
+++ /dev/null
@@ -1,498 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <deque>
-#include <boost/bind.hpp>
-#include <boost/optional.hpp>
-
-#include "Swiften/Session/SessionStream.h"
-#include "Swiften/Client/ClientSession.h"
-#include "Swiften/Elements/StartTLSRequest.h"
-#include "Swiften/Elements/StreamFeatures.h"
-#include "Swiften/Elements/TLSProceed.h"
-#include "Swiften/Elements/StartTLSFailure.h"
-#include "Swiften/Elements/AuthRequest.h"
-#include "Swiften/Elements/AuthSuccess.h"
-#include "Swiften/Elements/AuthFailure.h"
-
-using namespace Swift;
-
-class ClientSessionTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(ClientSessionTest);
-		CPPUNIT_TEST(testStart_Error);
-		CPPUNIT_TEST(testStartTLS);
-		CPPUNIT_TEST(testStartTLS_ServerError);
-		CPPUNIT_TEST(testStartTLS_ConnectError);
-		CPPUNIT_TEST(testAuthenticate);
-		CPPUNIT_TEST(testAuthenticate_Unauthorized);
-		CPPUNIT_TEST(testAuthenticate_NoValidAuthMechanisms);
-		/*
-		CPPUNIT_TEST(testResourceBind);
-		CPPUNIT_TEST(testResourceBind_ChangeResource);
-		CPPUNIT_TEST(testResourceBind_EmptyResource);
-		CPPUNIT_TEST(testResourceBind_Error);
-		CPPUNIT_TEST(testSessionStart);
-		CPPUNIT_TEST(testSessionStart_Error);
-		CPPUNIT_TEST(testSessionStart_AfterResourceBind);
-		CPPUNIT_TEST(testWhitespacePing);
-		CPPUNIT_TEST(testReceiveElementAfterSessionStarted);
-		CPPUNIT_TEST(testSendElement);
-		*/
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void setUp() {
-			server = boost::shared_ptr<MockSessionStream>(new MockSessionStream());
-			sessionFinishedReceived = false;
-			needCredentials = false;
-		}
-
-		void testStart_Error() {
-			boost::shared_ptr<ClientSession> session(createSession());
-			session->start();
-			server->breakConnection();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::Finished, session->getState());
-			CPPUNIT_ASSERT(sessionFinishedReceived);
-			CPPUNIT_ASSERT(sessionFinishedError);
-		}
-
-		void testStartTLS() {
-			boost::shared_ptr<ClientSession> session(createSession());
-			session->start();
-			server->receiveStreamStart();
-			server->sendStreamStart();
-			server->sendStreamFeaturesWithStartTLS();
-			server->receiveStartTLS();
-			CPPUNIT_ASSERT(!server->tlsEncrypted);
-			server->sendTLSProceed();
-			CPPUNIT_ASSERT(server->tlsEncrypted);
-			server->onTLSEncrypted();
-			server->receiveStreamStart();
-			server->sendStreamStart();
-		}
-
-		void testStartTLS_ServerError() {
-			boost::shared_ptr<ClientSession> session(createSession());
-			session->start();
-			server->receiveStreamStart();
-			server->sendStreamStart();
-			server->sendStreamFeaturesWithStartTLS();
-			server->receiveStartTLS();
-			server->sendTLSFailure();
-
-			CPPUNIT_ASSERT(!server->tlsEncrypted);
-			CPPUNIT_ASSERT_EQUAL(ClientSession::Finished, session->getState());
-			CPPUNIT_ASSERT(sessionFinishedReceived);
-			CPPUNIT_ASSERT(sessionFinishedError);
-		}
-
-		void testStartTLS_ConnectError() {
-			boost::shared_ptr<ClientSession> session(createSession());
-			session->start();
-			server->receiveStreamStart();
-			server->sendStreamStart();
-			server->sendStreamFeaturesWithStartTLS();
-			server->receiveStartTLS();
-			server->sendTLSProceed();
-			server->breakTLS();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::Finished, session->getState());
-			CPPUNIT_ASSERT(sessionFinishedReceived);
-			CPPUNIT_ASSERT(sessionFinishedError);
-		}
-
-		void testAuthenticate() {
-			boost::shared_ptr<ClientSession> session(createSession());
-			session->start();
-			server->receiveStreamStart();
-			server->sendStreamStart();
-			server->sendStreamFeaturesWithPLAINAuthentication();
-			CPPUNIT_ASSERT(needCredentials);
-			CPPUNIT_ASSERT_EQUAL(ClientSession::WaitingForCredentials, session->getState());
-			session->sendCredentials("mypass");
-			server->receiveAuthRequest("PLAIN");
-			server->sendAuthSuccess();
-			server->receiveStreamStart();
-		}
-
-		void testAuthenticate_Unauthorized() {
-			boost::shared_ptr<ClientSession> session(createSession());
-			session->start();
-			server->receiveStreamStart();
-			server->sendStreamStart();
-			server->sendStreamFeaturesWithPLAINAuthentication();
-			CPPUNIT_ASSERT(needCredentials);
-			CPPUNIT_ASSERT_EQUAL(ClientSession::WaitingForCredentials, session->getState());
-			session->sendCredentials("mypass");
-			server->receiveAuthRequest("PLAIN");
-			server->sendAuthFailure();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::Finished, session->getState());
-			CPPUNIT_ASSERT(sessionFinishedReceived);
-			CPPUNIT_ASSERT(sessionFinishedError);
-		}
-
-		void testAuthenticate_NoValidAuthMechanisms() {
-			boost::shared_ptr<ClientSession> session(createSession());
-			session->start();
-			server->receiveStreamStart();
-			server->sendStreamStart();
-			server->sendStreamFeaturesWithUnknownAuthentication();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::Finished, session->getState());
-			CPPUNIT_ASSERT(sessionFinishedReceived);
-			CPPUNIT_ASSERT(sessionFinishedError);
-		}
-
-	private:
-		boost::shared_ptr<ClientSession> createSession() {
-			boost::shared_ptr<ClientSession> session = ClientSession::create(JID("me@foo.com"), server);
-			session->onFinished.connect(boost::bind(&ClientSessionTest::handleSessionFinished, this, _1));
-			session->onNeedCredentials.connect(boost::bind(&ClientSessionTest::handleSessionNeedCredentials, this));
-			return session;
-		}
-
-		void handleSessionFinished(boost::shared_ptr<Error> error) {
-			sessionFinishedReceived = true;
-			sessionFinishedError = error;
-		}
-
-		void handleSessionNeedCredentials() {
-			needCredentials = true;
-		}
-
-		class MockSessionStream : public SessionStream {
-			public:
-				struct Event {
-					Event(boost::shared_ptr<Element> element) : element(element), footer(false) {}
-					Event(const ProtocolHeader& header) : header(header), footer(false) {}
-					Event() : footer(true) {}
-					
-					boost::shared_ptr<Element> element;
-					boost::optional<ProtocolHeader> header;
-					bool footer;
-				};
-
-				MockSessionStream() : available(true), canTLSEncrypt(true), tlsEncrypted(false), compressed(false), whitespacePingEnabled(false), resetCount(0) {
-				}
-
-				virtual bool isAvailable() {
-					return available;
-				}
-
-				virtual void writeHeader(const ProtocolHeader& header) {
-					receivedEvents.push_back(Event(header));
-				}
-
-				virtual void writeFooter() {
-					receivedEvents.push_back(Event());
-				}
-
-				virtual void writeElement(boost::shared_ptr<Element> element) {
-					receivedEvents.push_back(Event(element));
-				}
-
-				virtual bool supportsTLSEncryption() {
-					return canTLSEncrypt;
-				}
-
-				virtual void addTLSEncryption() {
-					tlsEncrypted = true;
-				}
-
-				virtual void addZLibCompression() {
-					compressed = true;
-				}
-
-				virtual void setWhitespacePingEnabled(bool enabled) {
-					whitespacePingEnabled = enabled;
-				}
-
-				virtual void resetXMPPParser() {
-					resetCount++;
-				}
-
-				void breakConnection() {
-					onError(boost::shared_ptr<SessionStream::Error>(new SessionStream::Error(SessionStream::Error::ConnectionReadError)));
-				}
-
-				void breakTLS() {
-					onError(boost::shared_ptr<SessionStream::Error>(new SessionStream::Error(SessionStream::Error::TLSError)));
-				}
-
-
-				void sendStreamStart() {
-					ProtocolHeader header;
-					header.setTo("foo.com");
-					return onStreamStartReceived(header);
-				}
-
-				void sendStreamFeaturesWithStartTLS() {
-					boost::shared_ptr<StreamFeatures> streamFeatures(new StreamFeatures());
-					streamFeatures->setHasStartTLS();
-					onElementReceived(streamFeatures);
-				}
-
-				void sendTLSProceed() {
-					onElementReceived(boost::shared_ptr<TLSProceed>(new TLSProceed()));
-				}
-
-				void sendTLSFailure() {
-					onElementReceived(boost::shared_ptr<StartTLSFailure>(new StartTLSFailure()));
-				}
-
-				void sendStreamFeaturesWithPLAINAuthentication() {
-					boost::shared_ptr<StreamFeatures> streamFeatures(new StreamFeatures());
-					streamFeatures->addAuthenticationMechanism("PLAIN");
-					onElementReceived(streamFeatures);
-				}
-
-				void sendStreamFeaturesWithUnknownAuthentication() {
-					boost::shared_ptr<StreamFeatures> streamFeatures(new StreamFeatures());
-					streamFeatures->addAuthenticationMechanism("UNKNOWN");
-					onElementReceived(streamFeatures);
-				}
-
-				void sendAuthSuccess() {
-					onElementReceived(boost::shared_ptr<AuthSuccess>(new AuthSuccess()));
-				}
-
-				void sendAuthFailure() {
-					onElementReceived(boost::shared_ptr<AuthFailure>(new AuthFailure()));
-				}
-
-				void receiveStreamStart() {
-					Event event = popEvent();
-					CPPUNIT_ASSERT(event.header);
-				}
-
-				void receiveStartTLS() {
-					Event event = popEvent();
-					CPPUNIT_ASSERT(event.element);
-					CPPUNIT_ASSERT(boost::dynamic_pointer_cast<StartTLSRequest>(event.element));
-				}
-
-				void receiveAuthRequest(const String& mech) {
-					Event event = popEvent();
-					CPPUNIT_ASSERT(event.element);
-					boost::shared_ptr<AuthRequest> request(boost::dynamic_pointer_cast<AuthRequest>(event.element));
-					CPPUNIT_ASSERT(request);
-					CPPUNIT_ASSERT_EQUAL(mech, request->getMechanism());
-				}
-
-				Event popEvent() {
-					CPPUNIT_ASSERT(receivedEvents.size() > 0);
-					Event event = receivedEvents.front();
-					receivedEvents.pop_front();
-					return event;
-				}
-
-				bool available;
-				bool canTLSEncrypt;
-				bool tlsEncrypted;
-				bool compressed;
-				bool whitespacePingEnabled;
-				int resetCount;
-				std::deque<Event> receivedEvents;
-		};
-
-		boost::shared_ptr<MockSessionStream> server;
-		bool sessionFinishedReceived;
-		bool needCredentials;
-		boost::shared_ptr<Error> sessionFinishedError;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ClientSessionTest);
-
-#if 0
-		void testAuthenticate() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar"));
-			session->onNeedCredentials.connect(boost::bind(&ClientSessionTest::setNeedCredentials, this));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeaturesWithAuthentication();
-			session->startSession();
-			processEvents();
-			CPPUNIT_ASSERT_EQUAL(ClientSession::WaitingForCredentials, session->getState());
-			CPPUNIT_ASSERT(needCredentials_);
-
-			getMockServer()->expectAuth("me", "mypass");
-			getMockServer()->sendAuthSuccess();
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			session->sendCredentials("mypass");
-			CPPUNIT_ASSERT_EQUAL(ClientSession::Authenticating, session->getState());
-			processEvents();
-			CPPUNIT_ASSERT_EQUAL(ClientSession::Negotiating, session->getState());
-		}
-
-		void testAuthenticate_Unauthorized() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar"));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeaturesWithAuthentication();
-			session->startSession();
-			processEvents();
-
-			getMockServer()->expectAuth("me", "mypass");
-			getMockServer()->sendAuthFailure();
-			session->sendCredentials("mypass");
-			processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::Error, session->getState());
-			CPPUNIT_ASSERT_EQUAL(ClientSession::AuthenticationFailedError, *session->getError());
-		}
-
-		void testAuthenticate_NoValidAuthMechanisms() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar"));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeaturesWithUnsupportedAuthentication();
-			session->startSession();
-			processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::Error, session->getState());
-			CPPUNIT_ASSERT_EQUAL(ClientSession::NoSupportedAuthMechanismsError, *session->getError());
-		}
-
-		void testResourceBind() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar"));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeaturesWithResourceBind();
-			getMockServer()->expectResourceBind("Bar", "session-bind");
-			// FIXME: Check CPPUNIT_ASSERT_EQUAL(ClientSession::BindingResource, session->getState());
-			getMockServer()->sendResourceBindResponse("me@foo.com/Bar", "session-bind");
-			session->startSession();
-
-			processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStarted, session->getState());
-			CPPUNIT_ASSERT_EQUAL(JID("me@foo.com/Bar"), session->getLocalJID());
-		}
-
-		void testResourceBind_ChangeResource() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar"));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeaturesWithResourceBind();
-			getMockServer()->expectResourceBind("Bar", "session-bind");
-			getMockServer()->sendResourceBindResponse("me@foo.com/Bar123", "session-bind");
-			session->startSession();
-			processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStarted, session->getState());
-			CPPUNIT_ASSERT_EQUAL(JID("me@foo.com/Bar123"), session->getLocalJID());
-		}
-
-		void testResourceBind_EmptyResource() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com"));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeaturesWithResourceBind();
-			getMockServer()->expectResourceBind("", "session-bind");
-			getMockServer()->sendResourceBindResponse("me@foo.com/NewResource", "session-bind");
-			session->startSession();
-			processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStarted, session->getState());
-			CPPUNIT_ASSERT_EQUAL(JID("me@foo.com/NewResource"), session->getLocalJID());
-		}
-
-		void testResourceBind_Error() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com"));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeaturesWithResourceBind();
-			getMockServer()->expectResourceBind("", "session-bind");
-			getMockServer()->sendError("session-bind");
-			session->startSession();
-			processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::Error, session->getState());
-			CPPUNIT_ASSERT_EQUAL(ClientSession::ResourceBindError, *session->getError());
-		}
-
-		void testSessionStart() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar"));
-			session->onSessionStarted.connect(boost::bind(&ClientSessionTest::setSessionStarted, this));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeaturesWithSession();
-			getMockServer()->expectSessionStart("session-start");
-			// FIXME: Check CPPUNIT_ASSERT_EQUAL(ClientSession::StartingSession, session->getState());
-			getMockServer()->sendSessionStartResponse("session-start");
-			session->startSession();
-			processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStarted, session->getState());
-			CPPUNIT_ASSERT(sessionStarted_);
-		}
-
-		void testSessionStart_Error() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar"));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeaturesWithSession();
-			getMockServer()->expectSessionStart("session-start");
-			getMockServer()->sendError("session-start");
-			session->startSession();
-			processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::Error, session->getState());
-			CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStartError, *session->getError());
-		}
-
-		void testSessionStart_AfterResourceBind() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar"));
-			session->onSessionStarted.connect(boost::bind(&ClientSessionTest::setSessionStarted, this));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeaturesWithResourceBindAndSession();
-			getMockServer()->expectResourceBind("Bar", "session-bind");
-			getMockServer()->sendResourceBindResponse("me@foo.com/Bar", "session-bind");
-			getMockServer()->expectSessionStart("session-start");
-			getMockServer()->sendSessionStartResponse("session-start");
-			session->startSession();
-			processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(ClientSession::SessionStarted, session->getState());
-			CPPUNIT_ASSERT(sessionStarted_);
-		}
-
-		void testWhitespacePing() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar"));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeatures();
-			session->startSession();
-			processEvents();
-			CPPUNIT_ASSERT(session->getWhitespacePingLayer());
-		}
-
-		void testReceiveElementAfterSessionStarted() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar"));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeatures();
-			session->startSession();
-			processEvents();
-
-			getMockServer()->expectMessage();
-			session->sendElement(boost::shared_ptr<Message>(new Message()));
-		}
-
-		void testSendElement() {
-			boost::shared_ptr<MockSession> session(createSession("me@foo.com/Bar"));
-			session->onElementReceived.connect(boost::bind(&ClientSessionTest::addReceivedElement, this, _1));
-			getMockServer()->expectStreamStart();
-			getMockServer()->sendStreamStart();
-			getMockServer()->sendStreamFeatures();
-			getMockServer()->sendMessage();
-			session->startSession();
-			processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(receivedElements_.size()));
-			CPPUNIT_ASSERT(boost::dynamic_pointer_cast<Message>(receivedElements_[0]));
-		}
-#endif
diff --git a/Swiften/Compress/UnitTest/ZLibCompressorTest.cpp b/Swiften/Compress/UnitTest/ZLibCompressorTest.cpp
deleted file mode 100644
index 7235f8e..0000000
--- a/Swiften/Compress/UnitTest/ZLibCompressorTest.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Compress/ZLibCompressor.h"
-
-using namespace Swift;
-
-
-class ZLibCompressorTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(ZLibCompressorTest);
-		CPPUNIT_TEST(testProcess);
-		CPPUNIT_TEST(testProcess_Twice);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		ZLibCompressorTest() {}
-
-		void testProcess() {
-			ZLibCompressor testling;
-			ByteArray result = testling.process("foo");
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\x78\xda\x4a\xcb\xcf\x07\x00\x00\x00\xff\xff", 11), result);
-		}
-
-		void testProcess_Twice() {
-			ZLibCompressor testling;
-			testling.process("foo");
-			ByteArray result = testling.process("bar");
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\x4a\x4a\x2c\x02\x00\x00\x00\xff\xff",9), result); 
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ZLibCompressorTest);
diff --git a/Swiften/Compress/UnitTest/ZLibDecompressorTest.cpp b/Swiften/Compress/UnitTest/ZLibDecompressorTest.cpp
deleted file mode 100644
index 871a630..0000000
--- a/Swiften/Compress/UnitTest/ZLibDecompressorTest.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Compress/ZLibDecompressor.h"
-#include "Swiften/Compress/ZLibCompressor.h"
-#include "Swiften/Compress/ZLibException.h"
-
-using namespace Swift;
-
-
-class ZLibDecompressorTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(ZLibDecompressorTest);
-		CPPUNIT_TEST(testProcess);
-		CPPUNIT_TEST(testProcess_Twice);
-		CPPUNIT_TEST(testProcess_Invalid);
-		CPPUNIT_TEST(testProcess_Huge);
-		CPPUNIT_TEST(testProcess_ChunkSize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		ZLibDecompressorTest() {}
-
-		void testProcess() {
-			ZLibDecompressor testling;
-			ByteArray result = testling.process(ByteArray("\x78\xda\x4a\xcb\xcf\x07\x00\x00\x00\xff\xff", 11));
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("foo"), result);
-		}
-
-		void testProcess_Twice() {
-			ZLibDecompressor testling;
-			testling.process(ByteArray("\x78\xda\x4a\xcb\xcf\x07\x00\x00\x00\xff\xff", 11));
-			ByteArray result = testling.process(ByteArray("\x4a\x4a\x2c\x02\x00\x00\x00\xff\xff", 9)); 
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("bar"), result);
-		}
-
-		void testProcess_Invalid() {
-			ZLibDecompressor testling;
-			CPPUNIT_ASSERT_THROW(testling.process(ByteArray("invalid")), ZLibException);
-		}
-
-		void testProcess_Huge() {
-			std::vector<char> data;
-			data.reserve(2048);
-			for (unsigned int i = 0; i < 2048; ++i) {
-				data.push_back(static_cast<char>(i));
-			}
-			ByteArray original(&data[0], data.size());
-			ByteArray compressed = ZLibCompressor().process(original);
-			ByteArray decompressed = ZLibDecompressor().process(compressed);
-
-			CPPUNIT_ASSERT_EQUAL(original, decompressed);
-		}
-
-		void testProcess_ChunkSize() {
-			std::vector<char> data;
-			data.reserve(1024);
-			for (unsigned int i = 0; i < 1024; ++i) {
-				data.push_back(static_cast<char>(i));
-			}
-			ByteArray original(&data[0], data.size());
-			ByteArray compressed = ZLibCompressor().process(original);
-			ByteArray decompressed = ZLibDecompressor().process(compressed);
-
-			CPPUNIT_ASSERT_EQUAL(original, decompressed);
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ZLibDecompressorTest);
diff --git a/Swiften/Compress/ZLibCodecompressor.cpp b/Swiften/Compress/ZLibCodecompressor.cpp
deleted file mode 100644
index a14f09d..0000000
--- a/Swiften/Compress/ZLibCodecompressor.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "Swiften/Compress/ZLibCodecompressor.h"
-
-#include <cassert>
-
-#include "Swiften/Compress/ZLibException.h"
-
-namespace Swift {
-
-static const int CHUNK_SIZE = 1024; // If you change this, also change the unittest
-
-ZLibCodecompressor::ZLibCodecompressor() {
-	stream_.zalloc = Z_NULL;
-	stream_.zfree = Z_NULL;
-	stream_.opaque = Z_NULL;
-}
-
-ZLibCodecompressor::~ZLibCodecompressor() {
-}
-
-ByteArray ZLibCodecompressor::process(const ByteArray& input) {
-	ByteArray output;
-	stream_.avail_in = input.getSize();
-	stream_.next_in = reinterpret_cast<Bytef*>(const_cast<char*>(input.getData()));
-	int outputPosition = 0;
-	do {
-		output.resize(outputPosition + CHUNK_SIZE);
-		stream_.avail_out = CHUNK_SIZE;
-		stream_.next_out = reinterpret_cast<Bytef*>(output.getData() + outputPosition);
-		int result = processZStream();
-		if (result != Z_OK && result != Z_BUF_ERROR) {
-			throw ZLibException(/* stream_.msg */);
-		}
-		outputPosition += CHUNK_SIZE;
-	}
-	while (stream_.avail_out == 0);
-	if (stream_.avail_in != 0) {
-		throw ZLibException();
-	}
-	output.resize(outputPosition - stream_.avail_out);
-	return output;
-}
-
-}
diff --git a/Swiften/Compress/ZLibCodecompressor.h b/Swiften/Compress/ZLibCodecompressor.h
deleted file mode 100644
index dd032fa..0000000
--- a/Swiften/Compress/ZLibCodecompressor.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_ZLibCodecompressor_H
-#define SWIFTEN_ZLibCodecompressor_H
-
-#include <zlib.h>
-
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class ZLibCodecompressor {
-		public:
-			ZLibCodecompressor();
-			virtual ~ZLibCodecompressor();
-
-			ByteArray process(const ByteArray& data);
-			virtual int processZStream() = 0;
-
-		protected:
-			z_stream stream_;
-	};
-}
-
-#endif
diff --git a/Swiften/Compress/ZLibCompressor.h b/Swiften/Compress/ZLibCompressor.h
deleted file mode 100644
index b5bace6..0000000
--- a/Swiften/Compress/ZLibCompressor.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef SWIFTEN_ZLibCompressor_H
-#define SWIFTEN_ZLibCompressor_H
-
-#include <cassert>
-
-#include "Swiften/Compress/ZLibCodecompressor.h"
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class ZLibCompressor : public ZLibCodecompressor {
-		public:
-			ZLibCompressor() {
-				int result = deflateInit(&stream_, COMPRESSION_LEVEL);
-				assert(result == Z_OK);
-				(void) result;
-			}
-
-			~ZLibCompressor() {
-				deflateEnd(&stream_);
-			}
-
-			virtual int processZStream() {
-				return deflate(&stream_, Z_SYNC_FLUSH);
-			}
-
-		private:
-			static const int COMPRESSION_LEVEL = 9;
-	};
-}
-
-#endif
diff --git a/Swiften/Compress/ZLibDecompressor.h b/Swiften/Compress/ZLibDecompressor.h
deleted file mode 100644
index 808feb2..0000000
--- a/Swiften/Compress/ZLibDecompressor.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef SWIFTEN_ZLibDecompressor_H
-#define SWIFTEN_ZLibDecompressor_H
-
-#include <cassert>
-
-#include "Swiften/Compress/ZLibCodecompressor.h"
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class ZLibDecompressor : public ZLibCodecompressor {
-		public:
-			ZLibDecompressor() {
-				int result = inflateInit(&stream_);
-				assert(result == Z_OK);
-				(void) result;
-			}
-
-			~ZLibDecompressor() {
-				inflateEnd(&stream_);
-			}
-
-			virtual int processZStream() {
-				return inflate(&stream_, Z_SYNC_FLUSH);
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Compress/ZLibException.h b/Swiften/Compress/ZLibException.h
deleted file mode 100644
index f16b4ed..0000000
--- a/Swiften/Compress/ZLibException.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef SWIFTEN_ZLIBEXCEPTION_H
-#define SWIFTEN_ZLIBEXCEPTION_H
-
-namespace Swift {
-	class ZLibException {
-		public:
-			ZLibException() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Disco/CapsInfoGenerator.cpp b/Swiften/Disco/CapsInfoGenerator.cpp
deleted file mode 100644
index 8d9e407..0000000
--- a/Swiften/Disco/CapsInfoGenerator.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "Swiften/Disco/CapsInfoGenerator.h"
-
-#include <algorithm>
-
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Elements/DiscoInfo.h"
-#include "Swiften/StringCodecs/SHA1.h"
-#include "Swiften/StringCodecs/Base64.h"
-
-namespace Swift {
-
-CapsInfoGenerator::CapsInfoGenerator(const String& node) : node_(node) {
-}
-
-CapsInfo CapsInfoGenerator::generateCapsInfo(const DiscoInfo& discoInfo) const {
-	String serializedCaps;
-
-	std::vector<DiscoInfo::Identity> identities(discoInfo.getIdentities());
-	std::sort(identities.begin(), identities.end());
-	foreach (const DiscoInfo::Identity& identity, identities) {
-		serializedCaps += identity.getCategory() + "/" + identity.getType() + "/" + identity.getLanguage() + "/" + identity.getName() + "<";
-	}
-
-	std::vector<String> features(discoInfo.getFeatures());
-	std::sort(features.begin(), features.end());
-	foreach (const String& feature, features) {
-		serializedCaps += feature + "<";
-	}
-
-	String version(Base64::encode(SHA1::getHash(serializedCaps)));
-	return CapsInfo(node_, version, "sha-1");
-}
-
-}
diff --git a/Swiften/Disco/CapsInfoGenerator.h b/Swiften/Disco/CapsInfoGenerator.h
deleted file mode 100644
index 66949ab..0000000
--- a/Swiften/Disco/CapsInfoGenerator.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef SWIFTEN_CapsInfoGenerator_H
-#define SWIFTEN_CapsInfoGenerator_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/CapsInfo.h"
-
-namespace Swift {
-	class DiscoInfo;
-
-	class CapsInfoGenerator {
-		public:
-			CapsInfoGenerator(const String& node);
-
-			CapsInfo generateCapsInfo(const DiscoInfo& discoInfo) const;
-
-		private:
-			String node_;
-	};
-}
-
-#endif
diff --git a/Swiften/Disco/UnitTest/CapsInfoGeneratorTest.cpp b/Swiften/Disco/UnitTest/CapsInfoGeneratorTest.cpp
deleted file mode 100644
index 94b9913..0000000
--- a/Swiften/Disco/UnitTest/CapsInfoGeneratorTest.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Elements/DiscoInfo.h"
-#include "Swiften/Disco/CapsInfoGenerator.h"
-
-using namespace Swift;
-
-class CapsInfoGeneratorTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(CapsInfoGeneratorTest);
-		CPPUNIT_TEST(testGenerate_XEP0115SimpleExample);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		CapsInfoGeneratorTest() {}
-
-		void testGenerate_XEP0115SimpleExample() {
-			DiscoInfo discoInfo;
-			discoInfo.addIdentity(DiscoInfo::Identity("Exodus 0.9.1", "client", "pc"));
-			discoInfo.addFeature("http://jabber.org/protocol/disco#items");
-			discoInfo.addFeature("http://jabber.org/protocol/caps");
-			discoInfo.addFeature("http://jabber.org/protocol/disco#info");
-			discoInfo.addFeature("http://jabber.org/protocol/muc");
-
-			CapsInfoGenerator testling("http://code.google.com/p/exodus");
-			CapsInfo result = testling.generateCapsInfo(discoInfo);
-
-			CPPUNIT_ASSERT_EQUAL(String("http://code.google.com/p/exodus"), result.getNode());
-			CPPUNIT_ASSERT_EQUAL(String("sha-1"), result.getHash());
-			CPPUNIT_ASSERT_EQUAL(String("QgayPKawpkPSDYmwT/WM94uAlu0="), result.getVersion());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(CapsInfoGeneratorTest);
diff --git a/Swiften/Elements/AuthChallenge.h b/Swiften/Elements/AuthChallenge.h
deleted file mode 100644
index b8a9297..0000000
--- a/Swiften/Elements/AuthChallenge.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class AuthChallenge : public Element {
-		public:
-			AuthChallenge(const ByteArray& value = "") : value(value) {
-			}
-
-			const ByteArray& getValue() const {
-				return value;
-			}
-
-			void setValue(const ByteArray& value) {
-				this->value = value;
-			}
-
-		private:
-			ByteArray value;
-	};
-}
diff --git a/Swiften/Elements/AuthFailure.h b/Swiften/Elements/AuthFailure.h
deleted file mode 100644
index b1857b3..0000000
--- a/Swiften/Elements/AuthFailure.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef SWIFTEN_AuthFailure_H
-#define SWIFTEN_AuthFailure_H
-
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class AuthFailure : public Element {
-		public:
-			AuthFailure() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/AuthRequest.h b/Swiften/Elements/AuthRequest.h
deleted file mode 100644
index 1f49175..0000000
--- a/Swiften/Elements/AuthRequest.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef SWIFTEN_AuthRequest_H
-#define SWIFTEN_AuthRequest_H
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class AuthRequest : public Element {
-		public:
-			AuthRequest(const String& mechanism = "", const ByteArray& message = "") : 
-					mechanism_(mechanism), message_(message) {
-			}
-
-			const ByteArray& getMessage() const {
-				return message_;
-			}
-
-			void setMessage(const ByteArray& message) {
-				message_ = message;
-			}
-
-			const String& getMechanism() const {
-				return mechanism_;
-			}
-
-			void setMechanism(const String& mechanism) {
-				mechanism_ = mechanism;
-			}
-
-		private:
-			String mechanism_;
-			ByteArray message_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/AuthResponse.h b/Swiften/Elements/AuthResponse.h
deleted file mode 100644
index 8a0679f..0000000
--- a/Swiften/Elements/AuthResponse.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class AuthResponse : public Element {
-		public:
-			AuthResponse(const ByteArray& value = "") : value(value) {
-			}
-
-			const ByteArray& getValue() const {
-				return value;
-			}
-
-			void setValue(const ByteArray& value) {
-				this->value = value;
-			}
-
-		private:
-			ByteArray value;
-	};
-}
diff --git a/Swiften/Elements/AuthSuccess.h b/Swiften/Elements/AuthSuccess.h
deleted file mode 100644
index 1db1729..0000000
--- a/Swiften/Elements/AuthSuccess.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#pragma once
-
-#include "Swiften/Elements/Element.h"
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class AuthSuccess : public Element {
-		public:
-			AuthSuccess() {}
-
-			const ByteArray& getValue() const {
-				return value;
-			}
-
-			void setValue(const ByteArray& value) {
-				this->value = value;
-			}
-
-		private:
-			ByteArray value;
-	};
-}
diff --git a/Swiften/Elements/Body.h b/Swiften/Elements/Body.h
deleted file mode 100644
index d78cecf..0000000
--- a/Swiften/Elements/Body.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef SWIFTEN_Body_H
-#define SWIFTEN_Body_H
-
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class Body : public Payload {
-		public:
-			Body(const String& text = "") : text_(text) {
-			}
-
-			void setText(const String& text) {
-				text_ = text;
-			}
-
-			const String& getText() const {
-				return text_;
-			}
-
-		private:
-			String text_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/CapsInfo.h b/Swiften/Elements/CapsInfo.h
deleted file mode 100644
index 4b478aa..0000000
--- a/Swiften/Elements/CapsInfo.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef SWIFTEN_CapsInfo_H
-#define SWIFTEN_CapsInfo_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class CapsInfo : public Payload {
-		public:
-			CapsInfo(const String& node, const String& version, const String& hash = "sha-1") : node_(node), version_(version), hash_(hash) {}
-
-			const String& getNode() const { return node_; }
-			const String& getVersion() const { return version_; }
-			const String& getHash() const { return hash_; }
-
-		private:
-			String node_;
-			String version_;
-			String hash_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/ChatState.h b/Swiften/Elements/ChatState.h
deleted file mode 100644
index 3378cc3..0000000
--- a/Swiften/Elements/ChatState.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class ChatState : public Payload {
-		public:
-			enum ChatStateType {Active, Composing, Paused, Inactive, Gone};
-			ChatState(ChatStateType state = Active) {
-				state_ = state;
-			}
-
-			ChatStateType getChatState() { return state_; }
-			void setChatState(ChatStateType state) {state_ = state;}
-
-		private:
-			ChatStateType state_;
-	};
-}
diff --git a/Swiften/Elements/CompressFailure.h b/Swiften/Elements/CompressFailure.h
deleted file mode 100644
index 880f71a..0000000
--- a/Swiften/Elements/CompressFailure.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef SWIFTEN_CompressFailure_H
-#define SWIFTEN_CompressFailure_H
-
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class CompressFailure : public Element {
-		public:
-			CompressFailure() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/CompressRequest.h b/Swiften/Elements/CompressRequest.h
deleted file mode 100644
index 53c0805..0000000
--- a/Swiften/Elements/CompressRequest.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef SWIFTEN_CompressRequest_H
-#define SWIFTEN_CompressRequest_H
-
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class CompressRequest : public Element
-	{
-		public:
-			CompressRequest(const String& method = "") : method_(method) {}
-
-			const String& getMethod() const {
-				return method_;
-			}
-
-			void setMethod(const String& method) { 
-				method_ = method;
-			}
-
-		private:
-			String method_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/Compressed.h b/Swiften/Elements/Compressed.h
deleted file mode 100644
index 37113d8..0000000
--- a/Swiften/Elements/Compressed.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_COMPRESSED_H
-#define SWIFTEN_COMPRESSED_H
-
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class Compressed : public Element
-	{
-		public:
-			Compressed() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/DiscoInfo.cpp b/Swiften/Elements/DiscoInfo.cpp
deleted file mode 100644
index 63ee051..0000000
--- a/Swiften/Elements/DiscoInfo.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "Swiften/Elements/DiscoInfo.h"
-
-namespace Swift {
-
-bool DiscoInfo::Identity::operator<(const Identity& other) const {
-	if (category_ == other.category_) {
-		if (type_ == other.type_) {
-			if (lang_ == other.lang_) {
-				return name_ < other.name_;
-			}
-			else {
-				return lang_ < other.lang_;
-			}
-		}
-		else {
-			return type_ < other.type_;
-		}
-	}
-	else {
-		return category_ < other.category_;
-	}
-}
-
-const std::string DiscoInfo::SecurityLabels = "urn:xmpp:sec-label:0";
-}
diff --git a/Swiften/Elements/DiscoInfo.h b/Swiften/Elements/DiscoInfo.h
deleted file mode 100644
index 8caeaf9..0000000
--- a/Swiften/Elements/DiscoInfo.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#ifndef SWIFTEN_DiscoInfo_H
-#define SWIFTEN_DiscoInfo_H
-
-#include <vector>
-#include <algorithm>
-
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class DiscoInfo : public Payload {
-		public:
-			const static std::string SecurityLabels;
-			class Identity {
-				public:
-					Identity(const String& name, const String& category = "client", const String& type = "pc", const String& lang = "") : name_(name), category_(category), type_(type), lang_(lang) {
-					}
-
-					const String& getCategory() const {
-						return category_;
-					}
-					
-					const String& getType() const {
-						return type_;
-					}
-
-					const String& getLanguage() const {
-						return lang_;
-					}
-
-					const String& getName() const {
-						return name_;
-					}
-
-					// Sorted according to XEP-115 rules
-					bool operator<(const Identity& other) const;
-
-				private:
-					String name_;
-					String category_;
-					String type_;
-					String lang_;
-			};
-
-			DiscoInfo() {
-			}
-
-			const String& getNode() const {
-				return node_;
-			}
-
-			void setNode(const String& node) {
-				node_ = node;
-			}
-
-			const std::vector<Identity> getIdentities() const {
-				return identities_;
-			}
-
-			void addIdentity(const Identity& identity) {
-				identities_.push_back(identity);
-			}
-
-			const std::vector<String>& getFeatures() const {
-				return features_;
-			}
-
-			void addFeature(const String& feature) {
-				features_.push_back(feature);
-			}
-
-			bool hasFeature(const String& feature) const {
-				return std::find(features_.begin(), features_.end(), feature) != features_.end();
-			}
-
-		private:
-			String node_;
-			std::vector<Identity> identities_;
-			std::vector<String> features_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/Element.cpp b/Swiften/Elements/Element.cpp
deleted file mode 100644
index a62aad9..0000000
--- a/Swiften/Elements/Element.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-
-Element::~Element() {
-}
-
-}
diff --git a/Swiften/Elements/Element.h b/Swiften/Elements/Element.h
deleted file mode 100644
index d1e9c6a..0000000
--- a/Swiften/Elements/Element.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef SWIFTEN_ELEMENT_H
-#define SWIFTEN_ELEMENT_H
-
-namespace Swift {
-	class Element {
-		public:
-			virtual ~Element();
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/ErrorPayload.h b/Swiften/Elements/ErrorPayload.h
deleted file mode 100644
index 32fd067..0000000
--- a/Swiften/Elements/ErrorPayload.h
+++ /dev/null
@@ -1,67 +0,0 @@
-#pragma once
-
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class ErrorPayload : public Payload {
-		public:
-			enum Type { Cancel, Continue, Modify, Auth, Wait };
-
-			enum Condition {
-				BadRequest,
-				Conflict,
-				FeatureNotImplemented,
-				Forbidden,
-				Gone,
-				InternalServerError,
-				ItemNotFound,
-				JIDMalformed,
-				NotAcceptable,
-				NotAllowed,
-				NotAuthorized,
-				PaymentRequired,
-				RecipientUnavailable,
-				Redirect,
-				RegistrationRequired,
-				RemoteServerNotFound,
-				RemoteServerTimeout,
-				ResourceConstraint,
-				ServiceUnavailable,
-				SubscriptionRequired,
-				UndefinedCondition,
-				UnexpectedRequest
-			};
-
-			ErrorPayload(Condition condition = UndefinedCondition, Type type = Cancel, const String& text = String()) : type_(type), condition_(condition), text_(text) { }
-
-			Type getType() const {
-				return type_; 
-			}
-
-			void setType(Type type) {
-				type_ = type;
-			}
-
-			Condition getCondition() const { 
-				return condition_; 
-			}
-
-			void setCondition(Condition condition) { 
-				condition_ = condition;
-			}
-
-			void setText(const String& text) {
-				text_ = text;
-			}
-
-			const String& getText() const { 
-				return text_; 
-			}
-
-		private:
-			Type type_;
-			Condition condition_;
-			String text_;
-	};
-}
diff --git a/Swiften/Elements/IQ.cpp b/Swiften/Elements/IQ.cpp
deleted file mode 100644
index 53dec53..0000000
--- a/Swiften/Elements/IQ.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "Swiften/Elements/IQ.h"
-
-namespace Swift {
-
-boost::shared_ptr<IQ> IQ::createRequest(
-		Type type, const JID& to, const String& id, boost::shared_ptr<Payload> payload) {
-	boost::shared_ptr<IQ> iq(new IQ(type));
-	if (to.isValid()) {
-		iq->setTo(to);
-	}
-	iq->setID(id);
-	if (payload) {
-		iq->addPayload(payload);
-	}
-	return iq;
-}
-
-boost::shared_ptr<IQ> IQ::createResult(
-		const JID& to, const String& id, boost::shared_ptr<Payload> payload) {
-	boost::shared_ptr<IQ> iq(new IQ(Result));
-	iq->setTo(to);
-	iq->setID(id);
-	if (payload) {
-		iq->addPayload(payload);
-	}
-	return iq;
-}
-
-boost::shared_ptr<IQ> IQ::createError(const JID& to, const String& id, ErrorPayload::Condition condition, ErrorPayload::Type type) {
-	boost::shared_ptr<IQ> iq(new IQ(IQ::Error));
-	iq->setTo(to);
-	iq->setID(id);
-	iq->addPayload(boost::shared_ptr<Swift::ErrorPayload>(new Swift::ErrorPayload(condition, type)));
-	return iq;
-}
-
-}
diff --git a/Swiften/Elements/IQ.h b/Swiften/Elements/IQ.h
deleted file mode 100644
index 80c2913..0000000
--- a/Swiften/Elements/IQ.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#pragma once
-
-#include "Swiften/Elements/Stanza.h"
-#include "Swiften/Elements/ErrorPayload.h"
-
-namespace Swift 
-{
-	class IQ : public Stanza
-	{
-		public: 
-			enum Type { Get, Set, Result, Error };
-
-			IQ(Type type = Get) : type_(type) { }
-
-			Type getType() const { return type_; }
-			void setType(Type type) { type_ = type; }
-
-			static boost::shared_ptr<IQ> createRequest(
-					Type type,
-					const JID& to,
-					const String& id,
-					boost::shared_ptr<Payload> payload);
-			static boost::shared_ptr<IQ> createResult(
-					const JID& to, 
-					const String& id, 
-					boost::shared_ptr<Payload> payload = boost::shared_ptr<Payload>());
-			static boost::shared_ptr<IQ> createError(
-					const JID& to,
-					const String& id,
-					ErrorPayload::Condition condition,
-					ErrorPayload::Type type);
-
-		private:
-			Type type_;
-	};
-}
diff --git a/Swiften/Elements/MUCPayload.h b/Swiften/Elements/MUCPayload.h
deleted file mode 100644
index 97932a1..0000000
--- a/Swiften/Elements/MUCPayload.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class MUCPayload : public Payload {
-		public:
-			MUCPayload() {
-			}
-	};
-}
diff --git a/Swiften/Elements/Message.h b/Swiften/Elements/Message.h
deleted file mode 100644
index 6d9171f..0000000
--- a/Swiften/Elements/Message.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#pragma once
-
-#include <boost/optional.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Body.h"
-#include "Swiften/Elements/ErrorPayload.h"
-#include "Swiften/Elements/Stanza.h"
-
-namespace Swift
-{
-	class Message : public Stanza
-	{
-	  public:
-			enum Type { Normal, Chat, Error, Groupchat, Headline };
-
-			Message() : type_(Chat) { }
-
-			String getBody() const { 
-				boost::shared_ptr<Body> body(getPayload<Body>());
-				if (body) {
-					return body->getText();
-				}
-				return "";
-			}
-
-			void setBody(const String& body) { 
-				updatePayload(boost::shared_ptr<Body>(new Body(body)));
-			}
-
-			bool isError() {
-				boost::shared_ptr<Swift::ErrorPayload> error(getPayload<Swift::ErrorPayload>());
-				return getType() == Message::Error || error;
-			}
-
-			Type getType() const { return type_; }
-			void setType(Type type) { type_ = type; }
-
-		private:
-			String body_;
-			Type type_;
-	};
-}
diff --git a/Swiften/Elements/Payload.cpp b/Swiften/Elements/Payload.cpp
deleted file mode 100644
index d929fad..0000000
--- a/Swiften/Elements/Payload.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-
-Payload::~Payload() {
-}
-
-}
diff --git a/Swiften/Elements/Payload.h b/Swiften/Elements/Payload.h
deleted file mode 100644
index 829dc24..0000000
--- a/Swiften/Elements/Payload.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef SWIFTEN_PAYLOAD_H
-#define SWIFTEN_PAYLOAD_H
-
-namespace Swift {
-	class Payload {
-		public:
-			virtual ~Payload();
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/Presence.h b/Swiften/Elements/Presence.h
deleted file mode 100644
index f748e44..0000000
--- a/Swiften/Elements/Presence.h
+++ /dev/null
@@ -1,62 +0,0 @@
-#pragma once
-
-#include "Swiften/Elements/Stanza.h"
-#include "Swiften/Elements/Status.h"
-#include "Swiften/Elements/StatusShow.h"
-#include "Swiften/Elements/Priority.h"
-
-namespace Swift {
-	class Presence : public Stanza
-	{
-		public:
-			enum Type { Available, Error, Probe, Subscribe, Subscribed, Unavailable, Unsubscribe, Unsubscribed };
-
-			Presence() : type_(Available) /*, showType_(Online)*/ {}
-			Presence(const String& status) : type_(Available) {
-				setStatus(status);
-			}
-
-			Type getType() const { return type_; }
-			void setType(Type type) { type_ = type; }
-
-			StatusShow::Type getShow() const { 
-				boost::shared_ptr<StatusShow> show(getPayload<StatusShow>());
-				if (show) {
-					return show->getType();
-				}
-				return type_ == Available ? StatusShow::Online : StatusShow::None;
-			}
-
-			void setShow(const StatusShow::Type &show) { 
-				updatePayload(boost::shared_ptr<StatusShow>(new StatusShow(show)));
-			}
-
-			String getStatus() const { 
-				boost::shared_ptr<Status> status(getPayload<Status>());
-				if (status) {
-					return status->getText();
-				}
-				return "";
-			}
-
-			void setStatus(const String& status) { 
-				updatePayload(boost::shared_ptr<Status>(new Status(status)));
-			}
-
-			int getPriority() const {
-				boost::shared_ptr<Priority> priority(getPayload<Priority>());
-				return (priority ? priority->getPriority() : 0);
-			}
-
-			void setPriority(int priority) {
-				updatePayload(boost::shared_ptr<Priority>(new Priority(priority)));
-			}
-
-			boost::shared_ptr<Presence> clone() const {
-				return boost::shared_ptr<Presence>(new Presence(*this));
-			}
-
-		private:
-			Presence::Type type_;
-	};
-}
diff --git a/Swiften/Elements/Priority.h b/Swiften/Elements/Priority.h
deleted file mode 100644
index fd6080e..0000000
--- a/Swiften/Elements/Priority.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef SWIFTEN_Priority_H
-#define SWIFTEN_Priority_H
-
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class Priority : public Payload {
-		public:
-			Priority(int priority = 0) : priority_(priority) {
-			}
-
-			void setPriority(int priority) {
-				priority_ = priority;
-			}
-
-			int getPriority() const {
-				return priority_;
-			}
-
-		private:
-			int priority_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/PrivateStorage.h b/Swiften/Elements/PrivateStorage.h
deleted file mode 100644
index 93f1cfe..0000000
--- a/Swiften/Elements/PrivateStorage.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class PrivateStorage : public Payload {
-		public:
-			PrivateStorage(boost::shared_ptr<Payload> payload = boost::shared_ptr<Payload>()) : payload(payload) {
-			}
-
-			boost::shared_ptr<Payload> getPayload() const {
-				return payload;
-			}
-
-			void setPayload(boost::shared_ptr<Payload> p) {
-				payload = p;
-			}
-
-		private:
-			boost::shared_ptr<Payload> payload;
-	};
-}
diff --git a/Swiften/Elements/ProtocolHeader.h b/Swiften/Elements/ProtocolHeader.h
deleted file mode 100644
index da64811..0000000
--- a/Swiften/Elements/ProtocolHeader.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class ProtocolHeader {
-		public:
-			ProtocolHeader() : version("1.0") {}
-
-			const String& getTo() const { return to; }
-			void setTo(const String& a)  { 
-				to = a;
-			}
-
-			const String& getFrom() const { return from; }
-			void setFrom(const String& a)  { 
-				from = a;
-			}
-
-			const String& getVersion() const { return version; }
-			void setVersion(const String& a)  { 
-				version = a;
-			}
-
-			const String& getID() const { return id; }
-			void setID(const String& a)  { 
-				id = a;
-			}
-	
-		private:
-			String to;
-			String from;
-			String id;
-			String version;
-	};
-}
diff --git a/Swiften/Elements/RawXMLPayload.h b/Swiften/Elements/RawXMLPayload.h
deleted file mode 100644
index c2ee439..0000000
--- a/Swiften/Elements/RawXMLPayload.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class RawXMLPayload : public Payload {
-		public:
-			RawXMLPayload() {}
-
-			void setRawXML(const String& data) {
-				rawXML_ = data;
-			}
-
-			const String& getRawXML() const {
-				return rawXML_;
-			}
-
-		private:
-			String rawXML_;
-	};
-}
diff --git a/Swiften/Elements/ResourceBind.h b/Swiften/Elements/ResourceBind.h
deleted file mode 100644
index 3b6c632..0000000
--- a/Swiften/Elements/ResourceBind.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef SWIFTEN_ResourceBind_H
-#define SWIFTEN_ResourceBind_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/JID/JID.h"
-
-namespace Swift {
-	class ResourceBind : public Payload
-	{
-		public:
-			ResourceBind() {}
-
-			void setJID(const JID& jid) {
-				jid_ = jid;
-			}
-
-			const JID& getJID() const { 
-				return jid_; 
-			}
-
-			void setResource(const String& resource) {
-				resource_ = resource;
-			}
-
-			const String& getResource() const {
-				return resource_; 
-			}
-
-		private:
-			JID jid_;
-			String resource_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/RosterItemPayload.h b/Swiften/Elements/RosterItemPayload.h
deleted file mode 100644
index 3925117..0000000
--- a/Swiften/Elements/RosterItemPayload.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef SWIFTEN_RosterItemPayloadPayload_H
-#define SWIFTEN_RosterItemPayloadPayload_H
-
-#include <vector>
-
-#include "Swiften/JID/JID.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class RosterItemPayload
-	{
-		public:
-			enum Subscription { None, To, From, Both, Remove };
-
-			RosterItemPayload() : subscription_(None), ask_(false) {}
-			RosterItemPayload(const JID& jid, const String& name, Subscription subscription) : jid_(jid), name_(name), subscription_(subscription), ask_(false) { }
-			
-			void setJID(const JID& jid) { jid_ = jid; }
-			const JID& getJID() const { return jid_; }
-
-			void setName(const String& name) { name_ = name; }
-			const String& getName() const { return name_; }
-
-			void setSubscription(Subscription subscription) { subscription_ = subscription; }
-			const Subscription& getSubscription() const { return subscription_; }
-
-			void addGroup(const String& group) { groups_.push_back(group); }
-			void setGroups(const std::vector<String>& groups) { groups_ = groups; }
-			const std::vector<String>& getGroups() const { return groups_; }
-
-			void setSubscriptionRequested() { ask_ = true; }
-			bool getSubscriptionRequested() const { return ask_; }
-
-		private:
-			JID jid_;
-			String name_;
-			Subscription subscription_;
-			std::vector<String> groups_;
-			bool ask_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/RosterPayload.cpp b/Swiften/Elements/RosterPayload.cpp
deleted file mode 100644
index 1aecde9..0000000
--- a/Swiften/Elements/RosterPayload.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "Swiften/Elements/RosterPayload.h"
-#include "Swiften/Base/foreach.h"
-
-namespace Swift {
-
-boost::optional<RosterItemPayload> RosterPayload::getItem(const JID& jid) const {
-	foreach(const RosterItemPayload& item, items_) {
-		// FIXME: MSVC rejects this. Find out why.
-		//if (item.getJID() == jid) {
-		if (item.getJID().equals(jid, JID::WithResource)) {
-			return boost::optional<RosterItemPayload>(item);
-		}
-	}
-	return boost::optional<RosterItemPayload>();
-}
-
-}
diff --git a/Swiften/Elements/RosterPayload.h b/Swiften/Elements/RosterPayload.h
deleted file mode 100644
index afb68c2..0000000
--- a/Swiften/Elements/RosterPayload.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef SWIFTEN_RosterPayload_H
-#define SWIFTEN_RosterPayload_H
-
-#include <vector>
-#include <boost/optional.hpp>
-
-#include "Swiften/Elements/RosterItemPayload.h"
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class RosterPayload : public Payload {
-		public:
-			typedef std::vector<RosterItemPayload> RosterItemPayloads;
-
-		public:
-			RosterPayload() {}
-
-			boost::optional<RosterItemPayload> getItem(const JID& jid) const;
-
-			void addItem(const RosterItemPayload& item) {
-				items_.push_back(item);
-			}
-
-			const RosterItemPayloads& getItems() const {
-				return items_;
-			}
-
-		private:
-			RosterItemPayloads items_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/SecurityLabel.h b/Swiften/Elements/SecurityLabel.h
deleted file mode 100644
index 65bdb4f..0000000
--- a/Swiften/Elements/SecurityLabel.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#ifndef SWIFTEN_SecurityLabel_H
-#define SWIFTEN_SecurityLabel_H
-
-#include <vector>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class SecurityLabel : public Payload {
-		public:
-			SecurityLabel() {}
-
-			const String& getDisplayMarking() const { return displayMarking_; }
-
-			void setDisplayMarking(const String& displayMarking) { 
-				displayMarking_ = displayMarking;
-			}
-
-			const String& getForegroundColor() const { 
-				return foregroundColor_; 
-			}
-
-			void setForegroundColor(const String& foregroundColor) { 
-				foregroundColor_ = foregroundColor;
-			}
-
-			const String& getBackgroundColor() const { 
-				return backgroundColor_; 
-			}
-
-			void setBackgroundColor(const String& backgroundColor) { 
-				backgroundColor_ = backgroundColor;
-			}
-
-			const String& getLabel() const { return label_; }
-
-			void setLabel(const String& label) {
-				label_ = label;
-			}
-
-			const std::vector<String>& getEquivalentLabels() const { return equivalentLabels_; }
-
-			void addEquivalentLabel(const String& label) {
-				equivalentLabels_.push_back(label);
-			}
-
-		private:
-			String displayMarking_;
-			String foregroundColor_;
-			String backgroundColor_;
-			String label_;
-			std::vector<String> equivalentLabels_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/SecurityLabelsCatalog.h b/Swiften/Elements/SecurityLabelsCatalog.h
deleted file mode 100644
index 611c26b..0000000
--- a/Swiften/Elements/SecurityLabelsCatalog.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef SWIFTEN_SecurityLabelsCatalog_H
-#define SWIFTEN_SecurityLabelsCatalog_H
-
-#include <vector>
-
-#include "Swiften/JID/JID.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/Elements/SecurityLabel.h"
-
-namespace Swift {
-	class SecurityLabelsCatalog : public Payload {
-		public:
-			SecurityLabelsCatalog(const JID& to = JID()) : to_(to) {}
-
-			const std::vector<SecurityLabel>& getLabels() const {
-				return labels_;
-			}
-
-			void addLabel(const SecurityLabel& label) {
-				labels_.push_back(label);
-			}
-
-			const JID& getTo() const {
-				return to_;
-			}
-
-			void setTo(const JID& to) {
-				to_ = to;
-			}
-
-			const String& getName() const {
-				return name_;
-			}
-
-			void setName(const String& name) {
-				name_ = name;
-			}
-
-			const String& getDescription() const {
-				return description_;
-			}
-
-			void setDescription(const String& description) {
-				description_ = description;
-			}
-
-		private:
-			JID to_;
-			String name_;
-			String description_;
-			std::vector<SecurityLabel> labels_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/SoftwareVersion.h b/Swiften/Elements/SoftwareVersion.h
deleted file mode 100644
index d064414..0000000
--- a/Swiften/Elements/SoftwareVersion.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef SWIFTEN_SoftwareVersion_H
-#define SWIFTEN_SoftwareVersion_H
-
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class SoftwareVersion : public Payload {
-		public:
-			SoftwareVersion(
-					const String& name = "", 
-					const String& version = "",
-					const String& os = "") : 
-						name_(name), version_(version), os_(os) {}
-			
-			const String& getName() const {
-				return name_;
-			}
-
-			void setName(const String& name) {
-				name_ = name;
-			}
-
-			const String& getVersion() const {
-				return version_;
-			}
-
-			void setVersion(const String& version) {
-				version_ = version;
-			}
-
-			const String& getOS() const {
-				return os_;
-			}
-
-			void setOS(const String& os) {
-				os_ = os;
-			}
-
-		private:
-			String name_;
-			String version_;
-			String os_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/Stanza.cpp b/Swiften/Elements/Stanza.cpp
deleted file mode 100644
index e644665..0000000
--- a/Swiften/Elements/Stanza.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "Swiften/Elements/Stanza.h"
-
-#include <typeinfo>
-
-namespace Swift {
-
-Stanza::~Stanza() {
-	payloads_.clear();
-}
-
-void Stanza::updatePayload(boost::shared_ptr<Payload> payload) {
-	foreach (boost::shared_ptr<Payload>& i, payloads_) {
-		if (typeid(*i.get()) == typeid(*payload.get())) {
-			i = payload;
-			return;
-		}
-	}
-	addPayload(payload);
-}
-
-boost::shared_ptr<Payload> Stanza::getPayloadOfSameType(boost::shared_ptr<Payload> payload) const {
-	foreach (const boost::shared_ptr<Payload>& i, payloads_) {
-		if (typeid(*i.get()) == typeid(*payload.get())) {
-			return i;
-		}
-	}
-	return boost::shared_ptr<Payload>();
-}
-
-
-}
diff --git a/Swiften/Elements/Stanza.h b/Swiften/Elements/Stanza.h
deleted file mode 100644
index e60ab21..0000000
--- a/Swiften/Elements/Stanza.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef SWIFTEN_STANZAS_STANZA_H
-#define SWIFTEN_STANZAS_STANZA_H
-
-#include <vector>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/Element.h"
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/foreach.h"
-#include "Swiften/JID/JID.h"
-
-namespace Swift {
-	class Stanza : public Element {
-		public:
-			virtual ~Stanza();
-
-			template<typename T> 
-			boost::shared_ptr<T> getPayload() const {
-				foreach (const boost::shared_ptr<Payload>& i, payloads_) {
-					boost::shared_ptr<T> result(boost::dynamic_pointer_cast<T>(i));
-					if (result) {
-						return result;
-					}
-				}
-				return boost::shared_ptr<T>();
-			}
-
-			const std::vector< boost::shared_ptr<Payload> >& getPayloads() const {
-				return payloads_;
-			}
-
-			void addPayload(boost::shared_ptr<Payload> payload) {
-				payloads_.push_back(payload);
-			}
-
-			void updatePayload(boost::shared_ptr<Payload> payload);
-
-			boost::shared_ptr<Payload> getPayloadOfSameType(boost::shared_ptr<Payload>) const;
-
-			const JID& getFrom() const { return from_; }
-			void setFrom(const JID& from) { from_ = from; }
-
-			const JID& getTo() const { return to_; }
-			void setTo(const JID& to) { to_ = to; }
-
-			const String& getID() const { return id_; }
-			void setID(const String& id) { id_ = id; }
-	
-		private:
-			String id_;
-			JID from_;
-			JID to_;
-
-			typedef std::vector< boost::shared_ptr<Payload> > Payloads;
-			Payloads payloads_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/StartSession.h b/Swiften/Elements/StartSession.h
deleted file mode 100644
index 2b46d05..0000000
--- a/Swiften/Elements/StartSession.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_StartSession_H
-#define SWIFTEN_StartSession_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class StartSession : public Payload {
-		public:
-			StartSession() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/StartTLSFailure.h b/Swiften/Elements/StartTLSFailure.h
deleted file mode 100644
index 17a1750..0000000
--- a/Swiften/Elements/StartTLSFailure.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef SWIFTEN_StartTLSFailure_H
-#define SWIFTEN_StartTLSFailure_H
-
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class StartTLSFailure : public Element {
-		public:
-			StartTLSFailure() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/StartTLSRequest.h b/Swiften/Elements/StartTLSRequest.h
deleted file mode 100644
index c40499a..0000000
--- a/Swiften/Elements/StartTLSRequest.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_StartTLSRequest_H
-#define SWIFTEN_StartTLSRequest_H
-
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class StartTLSRequest : public Element
-	{
-		public:
-			StartTLSRequest() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/Status.h b/Swiften/Elements/Status.h
deleted file mode 100644
index 0b80682..0000000
--- a/Swiften/Elements/Status.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef SWIFTEN_Status_H
-#define SWIFTEN_Status_H
-
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class Status : public Payload {
-		public:
-			Status(const String& text = "") : text_(text) {
-			}
-
-			void setText(const String& text) {
-				text_ = text;
-			}
-
-			const String& getText() const {
-				return text_;
-			}
-
-		private:
-			String text_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/StatusShow.h b/Swiften/Elements/StatusShow.h
deleted file mode 100644
index a001657..0000000
--- a/Swiften/Elements/StatusShow.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef SWIFTEN_StatusShow_H
-#define SWIFTEN_StatusShow_H
-
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class StatusShow : public Payload {
-		public:
-			enum Type { Online, Away, FFC, XA, DND, None };
-
-			StatusShow(const Type& type = Online) : type_(type) {
-			}
-
-			void setType(const Type& type) {
-				type_ = type;
-			}
-
-			const Type& getType() const {
-				return type_;
-			}
-
-		private:
-			Type type_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/Storage.h b/Swiften/Elements/Storage.h
deleted file mode 100644
index 1458836..0000000
--- a/Swiften/Elements/Storage.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#pragma once
-
-#include <vector>
-
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/JID/JID.h"
-
-namespace Swift {
-	class Storage : public Payload {
-		public:
-			struct Conference {
-				Conference() : autoJoin(false) {}
-
-				String name;
-				JID jid;
-				bool autoJoin;
-				String nick;
-				String password;
-			};
-
-			Storage() {
-			}
-
-			const std::vector<Conference>& getConferences() const {
-				return conferences;
-			}
-
-			void addConference(const Conference& conference) {
-				conferences.push_back(conference);
-			}
-
-		private:
-			std::vector<Conference> conferences;
-	};
-}
diff --git a/Swiften/Elements/StreamFeatures.h b/Swiften/Elements/StreamFeatures.h
deleted file mode 100644
index 2d5f4d6..0000000
--- a/Swiften/Elements/StreamFeatures.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef SWIFTEN_StreamFeatures_H
-#define SWIFTEN_StreamFeatures_H
-
-#include <vector>
-#include <algorithm>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class StreamFeatures : public Element
-	{
-		public:
-			StreamFeatures() : hasStartTLS_(false), hasResourceBind_(false), hasSession_(false) {}
-
-			void setHasStartTLS() {
-				hasStartTLS_ = true;
-			}
-
-			bool hasStartTLS() const {
-				return hasStartTLS_;
-			}
-
-			void setHasSession() {
-				hasSession_ = true;
-			}
-
-			bool hasSession() const {
-				return hasSession_;
-			}
-
-			void setHasResourceBind() {
-				hasResourceBind_ = true;
-			}
-
-			bool hasResourceBind() const {
-				return hasResourceBind_;
-			}
-
-			const std::vector<String>& getCompressionMethods() const {
-				return compressionMethods_;
-			}
-
-			void addCompressionMethod(const String& mechanism) {
-				compressionMethods_.push_back(mechanism);
-			}
-
-			bool hasCompressionMethod(const String& mechanism) const {
-				return std::find(compressionMethods_.begin(), compressionMethods_.end(), mechanism) != compressionMethods_.end();
-			}
-
-			const std::vector<String>& getAuthenticationMechanisms() const {
-				return authenticationMechanisms_;
-			}
-
-			void addAuthenticationMechanism(const String& mechanism) {
-				authenticationMechanisms_.push_back(mechanism);
-			}
-
-			bool hasAuthenticationMechanism(const String& mechanism) const {
-				return std::find(authenticationMechanisms_.begin(), authenticationMechanisms_.end(), mechanism) != authenticationMechanisms_.end();
-			}
-
-			bool hasAuthenticationMechanisms() const {
-				return !authenticationMechanisms_.empty();
-			}
-
-		private:
-			bool hasStartTLS_;
-			std::vector<String> compressionMethods_;
-			std::vector<String> authenticationMechanisms_;
-			bool hasResourceBind_;
-			bool hasSession_;
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/TLSProceed.h b/Swiften/Elements/TLSProceed.h
deleted file mode 100644
index 41f0341..0000000
--- a/Swiften/Elements/TLSProceed.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_TLSProceed_H
-#define SWIFTEN_TLSProceed_H
-
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class TLSProceed : public Element
-	{
-		public:
-			TLSProceed() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/UnitTest/IQTest.cpp b/Swiften/Elements/UnitTest/IQTest.cpp
deleted file mode 100644
index a5e6dc8..0000000
--- a/Swiften/Elements/UnitTest/IQTest.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/IQ.h"
-#include "Swiften/Elements/SoftwareVersion.h"
-
-using namespace Swift;
-
-class IQTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(IQTest);
-		CPPUNIT_TEST(testCreateResult);
-		CPPUNIT_TEST(testCreateResult_WithoutPayload);
-		CPPUNIT_TEST(testCreateError);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		IQTest() {}
-
-		void testCreateResult() {
-			boost::shared_ptr<Payload> payload(new SoftwareVersion("myclient"));
-			boost::shared_ptr<IQ> iq(IQ::createResult(JID("foo@bar/fum"), "myid", payload));
-
-			CPPUNIT_ASSERT_EQUAL(JID("foo@bar/fum"), iq->getTo());
-			CPPUNIT_ASSERT_EQUAL(String("myid"), iq->getID());
-			CPPUNIT_ASSERT(iq->getPayload<SoftwareVersion>());
-			CPPUNIT_ASSERT(payload == iq->getPayload<SoftwareVersion>());
-		}
-
-		void testCreateResult_WithoutPayload() {
-			boost::shared_ptr<IQ> iq(IQ::createResult(JID("foo@bar/fum"), "myid"));
-
-			CPPUNIT_ASSERT_EQUAL(JID("foo@bar/fum"), iq->getTo());
-			CPPUNIT_ASSERT_EQUAL(String("myid"), iq->getID());
-			CPPUNIT_ASSERT(!iq->getPayload<SoftwareVersion>());
-		}
-
-		void testCreateError() {
-			boost::shared_ptr<IQ> iq(IQ::createError(JID("foo@bar/fum"), "myid", ErrorPayload::BadRequest, ErrorPayload::Modify));
-
-			CPPUNIT_ASSERT_EQUAL(JID("foo@bar/fum"), iq->getTo());
-			CPPUNIT_ASSERT_EQUAL(String("myid"), iq->getID());
-			boost::shared_ptr<ErrorPayload> error(iq->getPayload<ErrorPayload>());
-			CPPUNIT_ASSERT(error);
-			CPPUNIT_ASSERT_EQUAL(ErrorPayload::BadRequest, error->getCondition());
-			CPPUNIT_ASSERT_EQUAL(ErrorPayload::Modify, error->getType());
-		}
-
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(IQTest);
diff --git a/Swiften/Elements/UnitTest/StanzaTest.cpp b/Swiften/Elements/UnitTest/StanzaTest.cpp
deleted file mode 100644
index b905957..0000000
--- a/Swiften/Elements/UnitTest/StanzaTest.cpp
+++ /dev/null
@@ -1,155 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/Stanza.h"
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/Elements/Message.h"
-
-using namespace Swift;
-
-class StanzaTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(StanzaTest);
-		CPPUNIT_TEST(testConstructor_Copy);
-		CPPUNIT_TEST(testGetPayload);
-		CPPUNIT_TEST(testGetPayload_NoSuchPayload);
-		CPPUNIT_TEST(testDestructor);
-		CPPUNIT_TEST(testDestructor_Copy);
-		CPPUNIT_TEST(testUpdatePayload_ExistingPayload);
-		CPPUNIT_TEST(testUpdatePayload_NewPayload);
-		CPPUNIT_TEST(testGetPayloadOfSameType);
-		CPPUNIT_TEST(testGetPayloadOfSameType_NoSuchPayload);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		class MyPayload1 : public Payload {
-			public:
-				MyPayload1() {}
-		};
-
-		class MyPayload2 : public Payload {
-			public:
-				MyPayload2(const String& s = "") : text_(s) {}
-
-				String text_;
-		};
-
-		class MyPayload3 : public Payload {
-			public:
-				MyPayload3() {}
-		};
-
-		class DestroyingPayload : public Payload {
-			public:
-				DestroyingPayload(bool* alive) : alive_(alive) {
-				}
-
-				~DestroyingPayload() {
-					(*alive_) = false;
-				}
-			
-			private:
-				bool* alive_;
-		};
-
-		StanzaTest() {}
-
-		void testConstructor_Copy() {
-			Message m;
-			m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1()));
-			m.addPayload(boost::shared_ptr<MyPayload2>(new MyPayload2()));
-			Message copy(m);
-
-			CPPUNIT_ASSERT(copy.getPayload<MyPayload1>());
-			CPPUNIT_ASSERT(copy.getPayload<MyPayload2>());
-		}
-
-		void testDestructor() {
-			bool payloadAlive = true;
-			{
-				Message m;
-				m.addPayload(boost::shared_ptr<DestroyingPayload>(new DestroyingPayload(&payloadAlive)));
-			}
-
-			CPPUNIT_ASSERT(!payloadAlive);
-		}
-
-		void testDestructor_Copy() {
-			bool payloadAlive = true;
-			Message* m1 = new Message();
-			m1->addPayload(boost::shared_ptr<DestroyingPayload>(new DestroyingPayload(&payloadAlive)));
-			Message* m2 = new Message(*m1);
-
-			delete m1;
-			CPPUNIT_ASSERT(payloadAlive);
-
-			delete m2;
-			CPPUNIT_ASSERT(!payloadAlive);
-		}
-
-		void testGetPayload() {
-			Message m;
-			m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1()));
-			m.addPayload(boost::shared_ptr<MyPayload2>(new MyPayload2()));
-			m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3()));
-
-			boost::shared_ptr<MyPayload2> p(m.getPayload<MyPayload2>());
-			CPPUNIT_ASSERT(p);
-		}
-
-		void testGetPayload_NoSuchPayload() {
-			Message m;
-			m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1()));
-			m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3()));
-
-			boost::shared_ptr<MyPayload2> p(m.getPayload<MyPayload2>());
-			CPPUNIT_ASSERT(!p);
-		}
-
-		void testUpdatePayload_ExistingPayload() {
-			Message m;
-			m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1()));
-			m.addPayload(boost::shared_ptr<MyPayload2>(new MyPayload2("foo")));
-			m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3()));
-
-			m.updatePayload(boost::shared_ptr<MyPayload2>(new MyPayload2("bar")));
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), m.getPayloads().size());
-			boost::shared_ptr<MyPayload2> p(m.getPayload<MyPayload2>());
-			CPPUNIT_ASSERT_EQUAL(String("bar"), p->text_);
-		}
-
-		void testUpdatePayload_NewPayload() {
-			Message m;
-			m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1()));
-			m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3()));
-
-			m.updatePayload(boost::shared_ptr<MyPayload2>(new MyPayload2("bar")));
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), m.getPayloads().size());
-			boost::shared_ptr<MyPayload2> p(m.getPayload<MyPayload2>());
-			CPPUNIT_ASSERT_EQUAL(String("bar"), p->text_);
-		}
-
-		void testGetPayloadOfSameType() {
-			Message m;
-			m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1()));
-			m.addPayload(boost::shared_ptr<MyPayload2>(new MyPayload2("foo")));
-			m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3()));
-
-			boost::shared_ptr<MyPayload2> payload(boost::dynamic_pointer_cast<MyPayload2>(m.getPayloadOfSameType(boost::shared_ptr<MyPayload2>(new MyPayload2("bar")))));
-			CPPUNIT_ASSERT(payload);
-			CPPUNIT_ASSERT_EQUAL(String("foo"), payload->text_);
-		}
-
-		void testGetPayloadOfSameType_NoSuchPayload() {
-			Message m;
-			m.addPayload(boost::shared_ptr<MyPayload1>(new MyPayload1()));
-			m.addPayload(boost::shared_ptr<MyPayload3>(new MyPayload3()));
-
-			CPPUNIT_ASSERT(!m.getPayloadOfSameType(boost::shared_ptr<MyPayload2>(new MyPayload2("bar"))));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StanzaTest);
diff --git a/Swiften/Elements/UnitTest/StanzasTest.cpp b/Swiften/Elements/UnitTest/StanzasTest.cpp
deleted file mode 100644
index 35b84e7..0000000
--- a/Swiften/Elements/UnitTest/StanzasTest.cpp
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "Swiften/Elements/Message.h"
-#include "Swiften/Elements/IQ.h"
-#include "Swiften/Elements/Presence.h"
diff --git a/Swiften/Elements/UnknownElement.h b/Swiften/Elements/UnknownElement.h
deleted file mode 100644
index 3d2c219..0000000
--- a/Swiften/Elements/UnknownElement.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef SWIFTEN_UnknownElement_H
-#define SWIFTEN_UnknownElement_H
-
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class UnknownElement : public Element {
-		public:
-			UnknownElement() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Elements/VCard.h b/Swiften/Elements/VCard.h
deleted file mode 100644
index a42d7e3..0000000
--- a/Swiften/Elements/VCard.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class VCard : public Payload {
-		public:
-			VCard() {}
-
-			void setFullName(const String& fullName) { fullName_ = fullName; }
-			const String& getFullName() const { return fullName_; }
-
-			void setFamilyName(const String& familyName) { familyName_ = familyName; }
-			const String& getFamilyName() const { return familyName_; }
-
-			void setGivenName(const String& givenName) { givenName_ = givenName; }
-			const String& getGivenName() const { return givenName_; }
-
-			void setEMail(const String& email) { email_ = email; }
-			const String& getEMail() const { return email_; }
-
-			void setNickname(const String& nick) { nick_ = nick; }
-			const String& getNickname() const { return nick_; }
-
-			void setPhoto(const ByteArray& photo) { photo_ = photo; }
-			const ByteArray& getPhoto() { return photo_; }
-
-			void setPhotoType(const String& photoType) { photoType_ = photoType; }
-			const String& getPhotoType() { return photoType_; }
-
-		private:
-			String fullName_;
-			String familyName_;
-			String givenName_;
-			String email_;
-			ByteArray photo_;
-			String photoType_;
-			String nick_;
-	};
-}
diff --git a/Swiften/Elements/VCardUpdate.h b/Swiften/Elements/VCardUpdate.h
deleted file mode 100644
index 6bb79cc..0000000
--- a/Swiften/Elements/VCardUpdate.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class VCardUpdate : public Payload {
-		public:
-			VCardUpdate(const String& photoHash = "") : photoHash_(photoHash) {}
-
-			void setPhotoHash(const String& photoHash) { photoHash_ = photoHash; }
-			const String& getPhotoHash() { return photoHash_; }
-
-		private:
-			String photoHash_;
-	};
-}
diff --git a/Swiften/Elements/Version.h b/Swiften/Elements/Version.h
deleted file mode 100644
index 327178e..0000000
--- a/Swiften/Elements/Version.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef SWIFTEN_STANZAS_VERSION_H
-#define SWIFTEN_STANZAS_VERSION_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class Version : public Payload
-	{
-		public:
-			Version(const String& name = "", const String& version = "", const String& os = "") : name_(name), version_(version), os_(os) { }
-
-			const String& getName() const { return name_; }
-			const String& getVersion() const { return version_; }
-			const String& getOS() const { return os_; }
-
-		private:
-			String name_;
-			String version_;
-			String os_;
-	};
-}
-
-#endif
diff --git a/Swiften/EventLoop/Cocoa/CocoaEvent.h b/Swiften/EventLoop/Cocoa/CocoaEvent.h
deleted file mode 100644
index 0ff4453..0000000
--- a/Swiften/EventLoop/Cocoa/CocoaEvent.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include <Cocoa/Cocoa.h>
-
-namespace Swift {
-	class Event;
-	class CocoaEventLoop;
-}
-
-@interface CocoaEvent : NSObject {
-	Swift::Event* event;
-	Swift::CocoaEventLoop* eventLoop;
-}
-
-// Takes ownership of event
-- (id) initWithEvent: (Swift::Event*) e eventLoop: (Swift::CocoaEventLoop*) el;
-- (void) process;
-- (void) dealloc;
-
-@end
diff --git a/Swiften/EventLoop/Cocoa/CocoaEvent.mm b/Swiften/EventLoop/Cocoa/CocoaEvent.mm
deleted file mode 100644
index 8a90983..0000000
--- a/Swiften/EventLoop/Cocoa/CocoaEvent.mm
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "Swiften/EventLoop/Cocoa/CocoaEvent.h"
-#include "Swiften/EventLoop/Event.h"
-#include "Swiften/EventLoop/Cocoa/CocoaEventLoop.h"
-
-@implementation CocoaEvent 
-
-- (id) initWithEvent: (Swift::Event*) e eventLoop: (Swift::CocoaEventLoop*) el {
-	self = [super init]; 
-	if (self != nil) { 
-		event = e;
-		eventLoop = el;
-	}
-	return self; 
-}
-
-- (void) process {
-	eventLoop->handleEvent(*event);
-}
-
-- (void) dealloc {
-	delete event;
-	[super dealloc];
-}
-
-@end
diff --git a/Swiften/EventLoop/Cocoa/CocoaEventLoop.h b/Swiften/EventLoop/Cocoa/CocoaEventLoop.h
deleted file mode 100644
index ad8e456..0000000
--- a/Swiften/EventLoop/Cocoa/CocoaEventLoop.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include "Swiften/EventLoop/EventLoop.h"
-
-namespace Swift {
-	class CocoaEventLoop : public EventLoop {
-		public:
-			CocoaEventLoop();
-
-			virtual void post(const Event& event);
-
-			using EventLoop::handleEvent;
-	};
-}
diff --git a/Swiften/EventLoop/Cocoa/CocoaEventLoop.mm b/Swiften/EventLoop/Cocoa/CocoaEventLoop.mm
deleted file mode 100644
index b90f3c6..0000000
--- a/Swiften/EventLoop/Cocoa/CocoaEventLoop.mm
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "Swiften/EventLoop/Cocoa/CocoaEventLoop.h"
-#include "Swiften/EventLoop/Cocoa/CocoaEvent.h"
-
-#pragma GCC diagnostic ignored "-Wold-style-cast"
-
-namespace Swift {
-
-CocoaEventLoop::CocoaEventLoop() {
-}
-
-void CocoaEventLoop::post(const Event& event) {
-	Event* eventCopy = new Event(event);
-	CocoaEvent* cocoaEvent = [[CocoaEvent alloc] initWithEvent: eventCopy eventLoop: this];
-	[cocoaEvent
-			performSelectorOnMainThread:@selector(process) 
-			withObject: nil
-			waitUntilDone: NO];
-	[cocoaEvent release];
-}
-
-}
diff --git a/Swiften/EventLoop/Deleter.h b/Swiften/EventLoop/Deleter.h
deleted file mode 100644
index 217a17f..0000000
--- a/Swiften/EventLoop/Deleter.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef SWIFTEN_Deleter_H
-#define SWIFTEN_Deleter_H
-
-#include <cassert>
-
-namespace Swift {
-	template<typename T>
-	class Deleter {
-		public:
-			Deleter(T* object) : object_(object) {
-			}
-
-			void operator()() {
-				assert(object_);
-				delete object_;
-				object_ = 0;
-			}
-
-		private:
-			T* object_;
-	};
-}
-#endif
diff --git a/Swiften/EventLoop/DummyEventLoop.h b/Swiften/EventLoop/DummyEventLoop.h
deleted file mode 100644
index 7766bd4..0000000
--- a/Swiften/EventLoop/DummyEventLoop.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#pragma once
-
-#include <deque>
-#include <iostream>
-#include <boost/function.hpp>
-
-#include "Swiften/EventLoop/EventLoop.h"
-#include "Swiften/Base/foreach.h"
-
-namespace Swift {
-	class DummyEventLoop : public EventLoop {
-		public:
-			DummyEventLoop() {
-			}
-
-			~DummyEventLoop() {
-				if (!events_.empty()) {
-					std::cerr << "DummyEventLoop: Unhandled events at destruction time" << std::endl;
-				}
-				events_.clear();
-			}
-
-			void processEvents() {
-				while (!events_.empty()) {
-					handleEvent(events_[0]);
-					events_.pop_front();
-				}
-			}
-
-			bool hasEvents() {
-				return events_.size() > 0;
-			}
-
-			virtual void post(const Event& event) {
-				events_.push_back(event);
-			}
-
-		private:
-			std::deque<Event> events_;
-	};
-}
diff --git a/Swiften/EventLoop/Event.h b/Swiften/EventLoop/Event.h
deleted file mode 100644
index edd35f4..0000000
--- a/Swiften/EventLoop/Event.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/function.hpp>
-
-#include "Swiften/EventLoop/EventOwner.h"
-
-namespace Swift {
-	struct Event {
-		Event(boost::shared_ptr<EventOwner> owner, const boost::function<void()>& callback) :
-				owner(owner), callback(callback) {
-		}
-
-		bool operator==(const Event& o) const {
-			return o.id == id;
-		}
-
-		unsigned int id;
-		boost::shared_ptr<EventOwner> owner;
-		boost::function<void()> callback;
-	};
-}
diff --git a/Swiften/EventLoop/EventLoop.cpp b/Swiften/EventLoop/EventLoop.cpp
deleted file mode 100644
index 3c3c356..0000000
--- a/Swiften/EventLoop/EventLoop.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "Swiften/EventLoop/EventLoop.h"
-
-#include <algorithm>
-#include <boost/bind.hpp>
-
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-
-EventLoop::EventLoop() : nextEventID_(0) {
-	MainEventLoop::setInstance(this);
-}
-
-EventLoop::~EventLoop() {
-	MainEventLoop::resetInstance();
-}
-
-void EventLoop::handleEvent(const Event& event) {
-	bool doCallback = false;
-	{
-		boost::lock_guard<boost::mutex> lock(eventsMutex_);
-		std::list<Event>::iterator i = std::find(events_.begin(), events_.end(), event);
-		if (i != events_.end()) {
-			doCallback = true;
-			events_.erase(i);
-		}
-	}
-	if (doCallback) {
-		event.callback();
-	}
-}
-
-void EventLoop::postEvent(boost::function<void ()> callback, boost::shared_ptr<EventOwner> owner) {
-	Event event(owner, callback);
-	{
-		boost::lock_guard<boost::mutex> lock(eventsMutex_);
-		event.id = nextEventID_;
-		nextEventID_++;
-		events_.push_back(event);
-	}
-	post(event);
-}
-
-void EventLoop::removeEventsFromOwner(boost::shared_ptr<EventOwner> owner) {
-		boost::lock_guard<boost::mutex> lock(eventsMutex_);
-		events_.remove_if(HasOwner(owner));
-}
-
-}
diff --git a/Swiften/EventLoop/EventLoop.h b/Swiften/EventLoop/EventLoop.h
deleted file mode 100644
index 2b45288..0000000
--- a/Swiften/EventLoop/EventLoop.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#pragma once
-
-#include <boost/function.hpp>
-#include <boost/thread/mutex.hpp>
-#include <list>
-
-#include "Swiften/EventLoop/Event.h"
-
-namespace Swift {
-	class EventOwner;
-	class EventLoop {
-		public:
-			EventLoop();
-			virtual ~EventLoop();
-			
-			void postEvent(boost::function<void ()> event, boost::shared_ptr<EventOwner> owner = boost::shared_ptr<EventOwner>());
-			void removeEventsFromOwner(boost::shared_ptr<EventOwner> owner);
-
-		protected:
-			/**
-			 * Reimplement this to call handleEvent(event) from the thread in which
-			 * the event loop is residing.
-			 */
-			virtual void post(const Event& event) = 0;
-		
-			void handleEvent(const Event& event);
-
-		private:
-			struct HasOwner {
-				HasOwner(boost::shared_ptr<EventOwner> owner) : owner(owner) {}
-				bool operator()(const Event& event) { return event.owner == owner; }
-				boost::shared_ptr<EventOwner> owner;
-			};
-			boost::mutex eventsMutex_;
-			unsigned int nextEventID_;
-			std::list<Event> events_;
-	};
-}
diff --git a/Swiften/EventLoop/EventOwner.cpp b/Swiften/EventLoop/EventOwner.cpp
deleted file mode 100644
index 4818b3c..0000000
--- a/Swiften/EventLoop/EventOwner.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/EventLoop/EventOwner.h"
-
-namespace Swift {
-
-EventOwner::~EventOwner() {
-}
-
-}
diff --git a/Swiften/EventLoop/EventOwner.h b/Swiften/EventLoop/EventOwner.h
deleted file mode 100644
index 8da95e0..0000000
--- a/Swiften/EventLoop/EventOwner.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-
-namespace Swift {
-	class EventOwner {
-		public:
-			virtual ~EventOwner();
-	};
-}
diff --git a/Swiften/EventLoop/MainEventLoop.cpp b/Swiften/EventLoop/MainEventLoop.cpp
deleted file mode 100644
index d7de6c6..0000000
--- a/Swiften/EventLoop/MainEventLoop.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-#include <iostream>
-#include <typeinfo>
-
-namespace Swift {
-
-EventLoop* MainEventLoop::getInstance() {
-	if (!instance_) {
-		std::cerr << "No main event loop instantiated. Please instantiate the appropriate subclass of EventLoop (e.g. SimpleEventLoop, QtEventLoop) at the start of your application." << std::endl;
-		exit(-1);
-	}
-	return instance_;
-}
-
-void MainEventLoop::setInstance(EventLoop* loop) {
-	assert(!instance_);
-	instance_ = loop;
-}
-
-void MainEventLoop::resetInstance() {
-	assert(instance_);
-	instance_ = 0;
-}
-
-void MainEventLoop::postEvent(boost::function<void ()> event, boost::shared_ptr<EventOwner> owner) {
-	getInstance()->postEvent(event, owner);
-}
-
-void MainEventLoop::removeEventsFromOwner(boost::shared_ptr<EventOwner> owner) {
-	getInstance()->removeEventsFromOwner(owner);
-}
-
-EventLoop* MainEventLoop::instance_ = 0;
-
-}
diff --git a/Swiften/EventLoop/MainEventLoop.h b/Swiften/EventLoop/MainEventLoop.h
deleted file mode 100644
index fbb7079..0000000
--- a/Swiften/EventLoop/MainEventLoop.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef SWIFTEN_MainEventLoop_H
-#define SWIFTEN_MainEventLoop_H
-
-#include <boost/function.hpp>
-
-#include "Swiften/EventLoop/Deleter.h"
-#include "Swiften/EventLoop/EventLoop.h"
-
-namespace Swift {
-	class EventLoop;
-	class EventOwner;
-
-	class MainEventLoop {
-			friend class EventLoop;
-
-		public:
-			/**
-			 * Post an event from the given owner to the event loop.
-			 * If the owner is destroyed, all events should be removed from the
-			 * loop using removeEventsFromOwner().
-			 */
-			static void postEvent(boost::function<void ()> event, boost::shared_ptr<EventOwner> owner = boost::shared_ptr<EventOwner>());
-
-			static void removeEventsFromOwner(boost::shared_ptr<EventOwner> owner);
-
-			template<typename T>
-			static void deleteLater(T* t) {
-				getInstance()->postEvent(Deleter<T>(t), 0);
-			}
-
-		private:
-			static void setInstance(EventLoop*);
-			static void resetInstance();
-			static EventLoop* getInstance();
-		
-		private:
-			static EventLoop* instance_;
-	};
-}
-
-#endif
diff --git a/Swiften/EventLoop/Qt/QtEventLoop.h b/Swiften/EventLoop/Qt/QtEventLoop.h
deleted file mode 100644
index 40e927e..0000000
--- a/Swiften/EventLoop/Qt/QtEventLoop.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#pragma once
-
-#include <QObject>
-#include <QEvent>
-#include <QCoreApplication>
-
-#include "Swiften/EventLoop/EventLoop.h"
-
-class QtEventLoop : public QObject, public Swift::EventLoop {
-	public:
-		QtEventLoop() {}
-
-		virtual void post(const Swift::Event& event) {
-			QCoreApplication::postEvent(this, new Event(event));
-		}
-
-		virtual bool event(QEvent* qevent) {
-			Event* event = dynamic_cast<Event*>(qevent);
-			if (event) {
-				handleEvent(event->event_);
-				//event->deleteLater(); FIXME: Leak?
-				return true;
-			}
-
-			return false;
-		}
-	
-	private:
-		struct Event : public QEvent {
-				Event(const Swift::Event& event) :
-						QEvent(QEvent::User), event_(event) {
-				}
-
-				Swift::Event event_;
-		};
-};
diff --git a/Swiften/EventLoop/SConscript b/Swiften/EventLoop/SConscript
deleted file mode 100644
index 5d1c3cb..0000000
--- a/Swiften/EventLoop/SConscript
+++ /dev/null
@@ -1,17 +0,0 @@
-Import("swiften_env")
-
-sources = [
-		"EventLoop.cpp",
-		"EventOwner.cpp",
-		"MainEventLoop.cpp",
-		"SimpleEventLoop.cpp",
-	]
-
-if swiften_env["PLATFORM"] == "darwin" and swiften_env["target"] == "native":
-	sources += [
-			"Cocoa/CocoaEventLoop.mm",
-			"Cocoa/CocoaEvent.mm"
-		]
-
-objects = swiften_env.StaticObject(sources)
-swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/EventLoop/SimpleEventLoop.cpp b/Swiften/EventLoop/SimpleEventLoop.cpp
deleted file mode 100644
index 7c46ed3..0000000
--- a/Swiften/EventLoop/SimpleEventLoop.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-#include "Swiften/EventLoop/SimpleEventLoop.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/Base/foreach.h"
-
-
-namespace Swift {
-
-void nop() {}
-
-SimpleEventLoop::SimpleEventLoop() : isRunning_(true) {
-}
-
-SimpleEventLoop::~SimpleEventLoop() {
-	if (!events_.empty()) {
-		std::cerr << "Warning: Pending events in SimpleEventLoop at destruction time" << std::endl;
-	}
-}
-
-void SimpleEventLoop::run() {
-	while (isRunning_) {
-		std::vector<Event> events;
-		{
-			boost::unique_lock<boost::mutex> lock(eventsMutex_);
-			while (events_.size() == 0) {
-				eventsAvailable_.wait(lock);
-			}
-			events.swap(events_);
-		}
-		foreach(const Event& event, events) {
-			handleEvent(event);
-		}
-	}
-}
-
-void SimpleEventLoop::stop() {
-	postEvent(boost::bind(&SimpleEventLoop::doStop, this));
-}
-
-void SimpleEventLoop::doStop() {
-	isRunning_ = false;
-}
-
-void SimpleEventLoop::post(const Event& event) {
-	{
-		boost::lock_guard<boost::mutex> lock(eventsMutex_);
-		events_.push_back(event);
-	}
-	eventsAvailable_.notify_one();
-}
-
-
-}
diff --git a/Swiften/EventLoop/SimpleEventLoop.h b/Swiften/EventLoop/SimpleEventLoop.h
deleted file mode 100644
index bd0a07f..0000000
--- a/Swiften/EventLoop/SimpleEventLoop.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#pragma once
-
-#include <vector>
-#include <boost/function.hpp>
-#include <boost/thread/mutex.hpp>
-#include <boost/thread/condition_variable.hpp>
-
-#include "Swiften/EventLoop/EventLoop.h"
-
-namespace Swift {
-	class SimpleEventLoop : public EventLoop {
-		public:
-			SimpleEventLoop();
-			~SimpleEventLoop();
-
-			void run();
-			void stop();
-
-			virtual void post(const Event& event);
-
-		private:
-			void doStop();
-
-		private:
-			bool isRunning_;
-			std::vector<Event> events_;
-			boost::mutex eventsMutex_;
-			boost::condition_variable eventsAvailable_;
-	};
-}
diff --git a/Swiften/EventLoop/UnitTest/EventLoopTest.cpp b/Swiften/EventLoop/UnitTest/EventLoopTest.cpp
deleted file mode 100644
index 9475ac9..0000000
--- a/Swiften/EventLoop/UnitTest/EventLoopTest.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/thread.hpp>
-#include <boost/bind.hpp>
-
-#include "Swiften/EventLoop/EventOwner.h"
-#include "Swiften/EventLoop/SimpleEventLoop.h"
-#include "Swiften/Base/sleep.h"
-
-using namespace Swift;
-
-class EventLoopTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(EventLoopTest);
-		CPPUNIT_TEST(testPost);
-		CPPUNIT_TEST(testRemove);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		EventLoopTest() {}
-
-		void setUp() {
-			events_.clear();
-		}
-
-		void testPost() {
-			SimpleEventLoop testling;
-
-			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 1));
-			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 2));
-			testling.stop();
-			testling.run();
-
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(events_.size()));
-			CPPUNIT_ASSERT_EQUAL(1, events_[0]);
-			CPPUNIT_ASSERT_EQUAL(2, events_[1]);
-		}
-
-		void testRemove() {
-			SimpleEventLoop testling;
-			boost::shared_ptr<MyEventOwner> eventOwner1(new MyEventOwner());
-			boost::shared_ptr<MyEventOwner> eventOwner2(new MyEventOwner());
-
-			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 1), eventOwner1);
-			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 2), eventOwner2);
-			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 3), eventOwner1);
-			testling.postEvent(boost::bind(&EventLoopTest::logEvent, this, 4), eventOwner2);
-			testling.removeEventsFromOwner(eventOwner2);
-			testling.stop();
-			testling.run();
-
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(events_.size()));
-			CPPUNIT_ASSERT_EQUAL(1, events_[0]);
-			CPPUNIT_ASSERT_EQUAL(3, events_[1]);
-		}
-	
-	private:
-		struct MyEventOwner : public EventOwner {};
-		void logEvent(int i) {
-			events_.push_back(i);
-		}
-
-	private:
-		std::vector<int> events_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(EventLoopTest);
diff --git a/Swiften/EventLoop/UnitTest/SimpleEventLoopTest.cpp b/Swiften/EventLoop/UnitTest/SimpleEventLoopTest.cpp
deleted file mode 100644
index 14f24c7..0000000
--- a/Swiften/EventLoop/UnitTest/SimpleEventLoopTest.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/thread.hpp>
-#include <boost/bind.hpp>
-
-#include "Swiften/EventLoop/SimpleEventLoop.h"
-#include "Swiften/Base/sleep.h"
-
-using namespace Swift;
-
-class SimpleEventLoopTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(SimpleEventLoopTest);
-		CPPUNIT_TEST(testRun);
-		CPPUNIT_TEST(testPostFromMainThread);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		SimpleEventLoopTest() {}
-
-		void setUp() {
-			counter_ = 0;
-		}
-
-		void testRun() {
-			SimpleEventLoop testling;
-			boost::thread thread(boost::bind(&SimpleEventLoopTest::runIncrementingThread, this, &testling));
-			testling.run();
-
-			CPPUNIT_ASSERT_EQUAL(10, counter_);
-		}
-
-		void testPostFromMainThread() {
-			SimpleEventLoop testling;
-			testling.postEvent(boost::bind(&SimpleEventLoopTest::incrementCounterAndStop, this, &testling));
-			testling.run();
-
-			CPPUNIT_ASSERT_EQUAL(1, counter_);
-		}
-
-	private:
-		void runIncrementingThread(SimpleEventLoop* loop) {
-			for (unsigned int i = 0; i < 10; ++i) {
-				Swift::sleep(1);
-				loop->postEvent(boost::bind(&SimpleEventLoopTest::incrementCounter, this));
-			}
-			loop->stop();
-		}
-
-		void incrementCounter() {
-			counter_++;
-		}
-
-		void incrementCounterAndStop(SimpleEventLoop* loop) {
-			counter_++;
-			loop->stop();
-		}
-
-		int counter_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(SimpleEventLoopTest);
diff --git a/Swiften/Events/MessageEvent.h b/Swiften/Events/MessageEvent.h
deleted file mode 100644
index 43174a1..0000000
--- a/Swiften/Events/MessageEvent.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef SWIFTEN_MessageEvent_H
-#define SWIFTEN_MessageEvent_H
-
-#include <cassert>
-
-#include <boost/signals.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Events/StanzaEvent.h"
-#include "Swiften/Elements/Message.h"
-
-namespace Swift {
-	class MessageEvent : public StanzaEvent {
-		public:
-			MessageEvent(boost::shared_ptr<Message> stanza) : stanza_(stanza){};
-			virtual ~MessageEvent(){};
-			boost::shared_ptr<Message> getStanza() {return stanza_;}
-
-			bool isReadable() {
-				return getStanza()->isError() || !getStanza()->getBody().isEmpty();
-			}
-
-			void read() {
-				assert (isReadable());
-				conclude();
-			}
-
-		private:
-			boost::shared_ptr<Message> stanza_;
-	};
-}
-
-#endif
diff --git a/Swiften/Events/StanzaEvent.h b/Swiften/Events/StanzaEvent.h
deleted file mode 100644
index b1dc537..0000000
--- a/Swiften/Events/StanzaEvent.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#pragma once
-
-#include <boost/signals.hpp>
-#include <boost/shared_ptr.hpp>
-
-namespace Swift {
-	class StanzaEvent {
-		public:
-			StanzaEvent(){concluded_ = false;};
-			virtual ~StanzaEvent() {};
-			void conclude() {concluded_ = true; onConclusion();};
-			/** Do not call this directly from outside the class */
-			boost::signal<void()> onConclusion;
-			bool getConcluded() {return concluded_;};
-		private:
-			bool concluded_;
-	};
-}
diff --git a/Swiften/Events/SubscriptionRequestEvent.h b/Swiften/Events/SubscriptionRequestEvent.h
deleted file mode 100644
index ed063d7..0000000
--- a/Swiften/Events/SubscriptionRequestEvent.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#pragma once
-
-#include <cassert>
-
-#include <boost/signals.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Events/StanzaEvent.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/JID/JID.h"
-
-namespace Swift {
-	class SubscriptionRequestEvent : public StanzaEvent {
-		public:
-			SubscriptionRequestEvent(const JID& jid, const String& reason) : jid_(jid), reason_(reason){};
-			virtual ~SubscriptionRequestEvent(){};
-			const JID& getJID() const {return jid_;};
-			const String& getReason() const {return reason_;};
-			boost::signal<void()> onAccept;
-			boost::signal<void()> onDecline;
-			void accept() {
-				onAccept();
-				conclude();
-			};
-
-			void decline() {
-				onDecline();
-				conclude();
-			};
-
-		private:
-			JID jid_;
-			String reason_;
-	};
-}
-
diff --git a/Swiften/Examples/EchoBot/.gitignore b/Swiften/Examples/EchoBot/.gitignore
deleted file mode 100644
index 9200f42..0000000
--- a/Swiften/Examples/EchoBot/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-EchoBot
diff --git a/Swiften/Examples/EchoBot/EchoBot.cpp b/Swiften/Examples/EchoBot/EchoBot.cpp
deleted file mode 100644
index 872d901..0000000
--- a/Swiften/Examples/EchoBot/EchoBot.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-#include <boost/bind.hpp>
-
-#include "Swiften/Client/Client.h"
-#include "Swiften/Client/ClientXMLTracer.h"
-#include "Swiften/EventLoop/SimpleEventLoop.h"
-#include "Swiften/Queries/Requests/GetRosterRequest.h"
-
-using namespace Swift;
-using namespace boost;
-
-class EchoBot {
-	public:
-		EchoBot(const JID& jid, const String& pass) : tracer(0) {
-			client = new Client(jid, pass);
-			tracer = new ClientXMLTracer(client);
-			client->onConnected.connect(bind(&EchoBot::handleConnected, this));
-			client->onMessageReceived.connect(bind(&EchoBot::handleMessageReceived, this, _1));
-			client->connect();
-		}
-
-		~EchoBot() {
-			delete tracer;
-			delete client;
-		}
-
-	private:
-		void handleConnected() {
-			shared_ptr<GetRosterRequest> rosterRequest(new GetRosterRequest(client));
-			rosterRequest->onResponse.connect(bind(&EchoBot::handleRosterReceived, this, _2));
-			rosterRequest->send();
-		}
-
-		void handleRosterReceived(const optional<Error>& error) {
-			if (error) {
-				std::cerr << "Error receiving roster. Continuing anyway.";
-			}
-			client->sendPresence(shared_ptr<Presence>(new Presence("Send me a message")));
-		}
-
-		void handleMessageReceived(shared_ptr<Message> message) {
-			message->setTo(message->getFrom());
-			message->setFrom(JID());
-			client->sendMessage(message);
-		}
-
-	private:
-		Client* client;
-		ClientXMLTracer* tracer;
-};
-
-int main(int, char**) {
-	SimpleEventLoop eventLoop;
-	EchoBot bot(JID("echobot@wonderland.lit"), "mypass");
-	eventLoop.run();
-	return 0;
-}
diff --git a/Swiften/Examples/SConscript b/Swiften/Examples/SConscript
deleted file mode 100644
index a4d5998..0000000
--- a/Swiften/Examples/SConscript
+++ /dev/null
@@ -1,8 +0,0 @@
-Import("swiften_env")
-
-myenv = swiften_env.Clone()
-
-if myenv["target"] == "native":
-   SConscript(dirs = [
-		"SendMessage"
-	])
diff --git a/Swiften/Examples/SendMessage/.gitignore b/Swiften/Examples/SendMessage/.gitignore
deleted file mode 100644
index 3b8b4d2..0000000
--- a/Swiften/Examples/SendMessage/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-SendMessage
diff --git a/Swiften/Examples/SendMessage/SConscript b/Swiften/Examples/SendMessage/SConscript
deleted file mode 100644
index 0e0197e..0000000
--- a/Swiften/Examples/SendMessage/SConscript
+++ /dev/null
@@ -1,13 +0,0 @@
-Import("env")
-
-myenv = env.Clone()
-myenv.MergeFlags(myenv["SWIFTEN_FLAGS"])
-myenv.MergeFlags(myenv["CPPUNIT_FLAGS"])
-myenv.MergeFlags(myenv["LIBIDN_FLAGS"])
-myenv.MergeFlags(myenv["BOOST_FLAGS"])
-myenv.MergeFlags(myenv["SQLITE_FLAGS"])
-myenv.MergeFlags(myenv["ZLIB_FLAGS"])
-myenv.MergeFlags(myenv["OPENSSL_FLAGS"])
-myenv.MergeFlags(myenv.get("LIBXML_FLAGS", ""))
-myenv.MergeFlags(myenv.get("EXPAT_FLAGS", ""))
-tester = myenv.Program("SendMessage", ["SendMessage.cpp"])
diff --git a/Swiften/Examples/SendMessage/SendMessage.cpp b/Swiften/Examples/SendMessage/SendMessage.cpp
deleted file mode 100644
index b7a80dd..0000000
--- a/Swiften/Examples/SendMessage/SendMessage.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-#include <boost/bind.hpp>
-#include <boost/thread.hpp>
-
-#include "Swiften/Client/Client.h"
-#include "Swiften/Network/BoostTimer.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-#include "Swiften/Client/ClientXMLTracer.h"
-#include "Swiften/EventLoop/SimpleEventLoop.h"
-#include "Swiften/Network/BoostIOServiceThread.h"
-#include "Swiften/Network/MainBoostIOServiceThread.h"
-
-using namespace Swift;
-
-SimpleEventLoop eventLoop;
-
-Client* client = 0;
-JID recipient;
-std::string messageBody;
-
-void handleConnected() {
-	boost::shared_ptr<Message> message(new Message());
-	message->setBody(messageBody);
-	message->setTo(recipient);
-	client->sendMessage(message);
-	client->disconnect();
-	eventLoop.stop();
-}
-
-int main(int argc, char* argv[]) {
-	if (argc != 5) {
-		std::cerr << "Usage: " << argv[0] << " <jid> <password> <recipient> <message>" << std::endl;
-		return -1;
-	}
-
-	recipient = JID(argv[3]);
-	messageBody = std::string(argv[4]);
-
-	client = new Swift::Client(JID(argv[1]), String(argv[2]));
-	ClientXMLTracer* tracer = new ClientXMLTracer(client);
-	client->onConnected.connect(&handleConnected);
-	client->connect();
-
-	{
-		boost::shared_ptr<BoostTimer> timer(new BoostTimer(30000, &MainBoostIOServiceThread::getInstance().getIOService()));
-		timer->onTick.connect(boost::bind(&SimpleEventLoop::stop, &eventLoop));
-		timer->start();
-
-		eventLoop.run();
-	}
-
-	delete tracer;
-	delete client;
-}
diff --git a/Swiften/History/HistoryManager.cpp b/Swiften/History/HistoryManager.cpp
deleted file mode 100644
index 3d67c27..0000000
--- a/Swiften/History/HistoryManager.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/History/HistoryManager.h"
-
-namespace Swift {
-
-HistoryManager::~HistoryManager() {
-}
-
-}
diff --git a/Swiften/History/HistoryManager.h b/Swiften/History/HistoryManager.h
deleted file mode 100644
index 2a7c040..0000000
--- a/Swiften/History/HistoryManager.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/History/HistoryMessage.h"
-
-namespace Swift {
-	class HistoryManager {
-		public:
-			virtual ~HistoryManager();
-
-			virtual void addMessage(const HistoryMessage& message) = 0;
-
-			virtual std::vector<HistoryMessage> getMessages() const = 0;
-	};
-}
diff --git a/Swiften/History/HistoryMessage.h b/Swiften/History/HistoryMessage.h
deleted file mode 100644
index 3fda3e2..0000000
--- a/Swiften/History/HistoryMessage.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#pragma once
-
-#include <boost/date_time/posix_time/posix_time_types.hpp>
-
-namespace Swift {
-	class HistoryMessage {
-		public:
-			HistoryMessage(const String& message, const JID& from, const JID& to, const boost::posix_time::ptime time) : message_(message), from_(from), to_(to), time_(time) {
-			}
-
-			const String& getMessage() const {
-				return message_;
-			}
-
-			const JID& getFrom() const {
-				return from_;
-			}
-
-			const JID& getTo() const {
-				return to_;
-			}
-
-			boost::posix_time::ptime getTime() const {
-				return time_;
-			}
-
-			bool operator==(const HistoryMessage& o) const {
-				return message_ == o.message_ && from_ == o.from_ && to_ == o.to_ && time_ == o.time_;
-			}
-
-		private:
-			String message_;
-			JID from_;
-			JID to_;
-			boost::posix_time::ptime time_;
-	};
-}
diff --git a/Swiften/History/SConscript b/Swiften/History/SConscript
deleted file mode 100644
index bc80780..0000000
--- a/Swiften/History/SConscript
+++ /dev/null
@@ -1,11 +0,0 @@
-Import("swiften_env")
-
-myenv = swiften_env.Clone()
-if myenv["target"] == "native":
-   myenv.MergeFlags(swiften_env["SQLITE_FLAGS"])
-
-objects = myenv.StaticObject([
-			"HistoryManager.cpp",
-			"SQLiteHistoryManager.cpp",
-		])
-swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/History/SQLiteHistoryManager.cpp b/Swiften/History/SQLiteHistoryManager.cpp
deleted file mode 100644
index 865abba..0000000
--- a/Swiften/History/SQLiteHistoryManager.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-#include <iostream>
-#include <boost/lexical_cast.hpp>
-
-#include "sqlite3.h"
-#include "Swiften/History/SQLiteHistoryManager.h"
-
-namespace {
-
-inline Swift::String getEscapedString(const Swift::String& s) {
-	Swift::String result(s);
-	result.replaceAll('\'', Swift::String("\\'"));
-	return result;
-}
-
-}
-
-
-namespace Swift {
-
-SQLiteHistoryManager::SQLiteHistoryManager(const String& file) : db_(0) {
-	sqlite3_open(file.getUTF8Data(), &db_);
-	if (!db_) {
-		std::cerr << "Error opening database " << file << std::endl; // FIXME
-	}
-
-	char* errorMessage;
-	int result = sqlite3_exec(db_, "CREATE TABLE IF NOT EXISTS messages('from' INTEGER, 'to' INTEGER, 'message' STRING, 'time' INTEGER)", 0, 0, &errorMessage);
-	if (result != SQLITE_OK) {
-		std::cerr << "SQL Error: " << errorMessage << std::endl;
-		sqlite3_free(errorMessage);
-	}
-
-	result = sqlite3_exec(db_, "CREATE TABLE IF NOT EXISTS jids('id' INTEGER PRIMARY KEY ASC AUTOINCREMENT, 'jid' STRING UNIQUE NOT NULL)", 0, 0, &errorMessage);
-	if (result != SQLITE_OK) {
-		std::cerr << "SQL Error: " << errorMessage << std::endl;
-		sqlite3_free(errorMessage);
-	}
-}
-
-SQLiteHistoryManager::~SQLiteHistoryManager() {
-	sqlite3_close(db_);
-}
-
-void SQLiteHistoryManager::addMessage(const HistoryMessage& message) {
-	int secondsSinceEpoch = (message.getTime() - boost::posix_time::ptime(boost::gregorian::date(1970, 1, 1))).total_seconds();
-	String statement = String("INSERT INTO messages('from', 'to', 'message', 'time') VALUES(") + boost::lexical_cast<std::string>(getIDForJID(message.getFrom())) + ", " + boost::lexical_cast<std::string>(getIDForJID(message.getTo())) + ", '" + getEscapedString(message.getMessage()) + "', " + boost::lexical_cast<std::string>(secondsSinceEpoch) + ")";
-	char* errorMessage;
-	int result = sqlite3_exec(db_, statement.getUTF8Data(), 0, 0, &errorMessage);
-	if (result != SQLITE_OK) {
-		std::cerr << "SQL Error: " << errorMessage << std::endl;
-		sqlite3_free(errorMessage);
-	}
-}
-
-std::vector<HistoryMessage> SQLiteHistoryManager::getMessages() const {
-	std::vector<HistoryMessage> result;
-	sqlite3_stmt* selectStatement;
-	String selectQuery("SELECT messages.'from', messages.'to', messages.'message', messages.'time' FROM messages");
-	int r = sqlite3_prepare(db_, selectQuery.getUTF8Data(), selectQuery.getUTF8Size(), &selectStatement, NULL);
-	if (r != SQLITE_OK) {
-		std::cout << "Error: " << sqlite3_errmsg(db_) << std::endl;
-	}
-	r = sqlite3_step(selectStatement);
-	while (r == SQLITE_ROW) {
-		boost::optional<JID> from(getJIDFromID(sqlite3_column_int(selectStatement, 0)));
-		boost::optional<JID> to(getJIDFromID(sqlite3_column_int(selectStatement, 1)));
-		String message(reinterpret_cast<const char*>(sqlite3_column_text(selectStatement, 2)));
-		int secondsSinceEpoch(sqlite3_column_int(selectStatement, 3));
-		boost::posix_time::ptime time(boost::gregorian::date(1970, 1, 1), boost::posix_time::seconds(secondsSinceEpoch));
-
-		result.push_back(HistoryMessage(message, (from ? *from : JID()), (to ? *to : JID()), time));
-		r = sqlite3_step(selectStatement);
-	}
-	if (r != SQLITE_DONE) {
-		std::cout << "Error: " << sqlite3_errmsg(db_) << std::endl;
-	}
-	sqlite3_finalize(selectStatement);
-	return result;
-}
-
-int SQLiteHistoryManager::getIDForJID(const JID& jid) {
-	boost::optional<int> id = getIDFromJID(jid);
-	if (id) {
-		return *id;
-	}
-	else {
-		return addJID(jid);
-	}
-}
-
-int SQLiteHistoryManager::addJID(const JID& jid) {
-	String statement = String("INSERT INTO jids('jid') VALUES('") + getEscapedString(jid.toString()) + "')";
-	char* errorMessage;
-	int result = sqlite3_exec(db_, statement.getUTF8Data(), 0, 0, &errorMessage);
-	if (result != SQLITE_OK) {
-		std::cerr << "SQL Error: " << errorMessage << std::endl;
-		sqlite3_free(errorMessage);
-	}
-	return sqlite3_last_insert_rowid(db_);
-}
-
-boost::optional<JID> SQLiteHistoryManager::getJIDFromID(int id) const {
-	boost::optional<JID> result;
-	sqlite3_stmt* selectStatement;
-	String selectQuery("SELECT jid FROM jids WHERE id=" + boost::lexical_cast<std::string>(id));
-	int r = sqlite3_prepare(db_, selectQuery.getUTF8Data(), selectQuery.getUTF8Size(), &selectStatement, NULL);
-	if (r != SQLITE_OK) {
-		std::cout << "Error: " << sqlite3_errmsg(db_) << std::endl;
-	}
-	r = sqlite3_step(selectStatement);
-	if (r == SQLITE_ROW) {
-		result = boost::optional<JID>(reinterpret_cast<const char*>(sqlite3_column_text(selectStatement, 0)));
-	}
-	sqlite3_finalize(selectStatement);
-	return result;
-}
-
-boost::optional<int> SQLiteHistoryManager::getIDFromJID(const JID& jid) const {
-	boost::optional<int> result;
-	sqlite3_stmt* selectStatement;
-	String selectQuery("SELECT id FROM jids WHERE jid='" + jid.toString() + "'");
-	int r = sqlite3_prepare(db_, selectQuery.getUTF8Data(), selectQuery.getUTF8Size(), &selectStatement, NULL);
-	if (r != SQLITE_OK) {
-		std::cout << "Error: " << sqlite3_errmsg(db_) << std::endl;
-	}
-	r = sqlite3_step(selectStatement);
-	if (r == SQLITE_ROW) {
-		result = boost::optional<int>(sqlite3_column_int(selectStatement, 0));
-	}
-	sqlite3_finalize(selectStatement);
-	return result;
-}
-
-}
diff --git a/Swiften/History/SQLiteHistoryManager.h b/Swiften/History/SQLiteHistoryManager.h
deleted file mode 100644
index ace42f7..0000000
--- a/Swiften/History/SQLiteHistoryManager.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#pragma once
-
-#include <boost/optional.hpp>
-
-#include "Swiften/History/HistoryManager.h"
-
-struct sqlite3;
-
-namespace Swift {
-	class SQLiteHistoryManager : public HistoryManager {
-		public:
-			SQLiteHistoryManager(const String& file);
-			~SQLiteHistoryManager();
-
-			virtual void addMessage(const HistoryMessage& message);
-			virtual std::vector<HistoryMessage> getMessages() const;
-
-			int getIDForJID(const JID&);
-			int addJID(const JID&);
-
-			boost::optional<JID> getJIDFromID(int id) const;
-			boost::optional<int> getIDFromJID(const JID& jid) const;
-
-		private:
-			sqlite3* db_;
-	};
-}
diff --git a/Swiften/History/UnitTest/SQLiteHistoryManagerTest.cpp b/Swiften/History/UnitTest/SQLiteHistoryManagerTest.cpp
deleted file mode 100644
index e738a6e..0000000
--- a/Swiften/History/UnitTest/SQLiteHistoryManagerTest.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/date_time/posix_time/posix_time.hpp>
-
-#include "Swiften/History/SQLiteHistoryManager.h"
-
-using namespace Swift;
-
-class SQLiteHistoryManagerTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(SQLiteHistoryManagerTest);
-		CPPUNIT_TEST(testAddMessage);
-		CPPUNIT_TEST(testAddMessage_TwoMessages);
-		CPPUNIT_TEST(testGetIDForJID_SameJID);
-		CPPUNIT_TEST(testGetIDForJID_DifferentJIDs);
-		CPPUNIT_TEST(getJIDFromID);
-		CPPUNIT_TEST(getJIDFromID_UnexistingID);
-		CPPUNIT_TEST(getIDFromJID);
-		CPPUNIT_TEST(getIDFromJID_UnexistingJID);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		SQLiteHistoryManagerTest() {}
-
-		void setUp() {
-		}
-
-		void tearDown() {
-		}
-
-		void testAddMessage() {
-			std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager());
-			HistoryMessage testMessage("Test", JID("foo@bar.com"), JID("fum@baz.org"), boost::posix_time::time_from_string("1980-01-21 22:03"));
-			testling->addMessage(testMessage);
-
-			std::vector<HistoryMessage> messages = testling->getMessages();
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(messages.size()));
-			CPPUNIT_ASSERT(testMessage == messages[0]);
-		}
-
-		void testAddMessage_TwoMessages() {
-			std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager());
-			HistoryMessage testMessage1("Test1", JID("foo@bar.com"), JID("fum@baz.org"), boost::posix_time::time_from_string("1980-01-21 22:03"));
-			testling->addMessage(testMessage1);
-			HistoryMessage testMessage2("Test2", JID("fum@baz.org"), JID("foo@bar.com"), boost::posix_time::time_from_string("1975-03-09 22:04"));
-			testling->addMessage(testMessage2);
-
-			std::vector<HistoryMessage> messages = testling->getMessages();
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(messages.size()));
-			CPPUNIT_ASSERT(testMessage1 == messages[0]);
-			CPPUNIT_ASSERT(testMessage2 == messages[1]);
-		}
-
-		void testGetIDForJID_SameJID() {
-			std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager());
-			int id1 = testling->getIDForJID(JID("foo@bar.com"));
-			int id2 = testling->getIDForJID(JID("foo@bar.com"));
-
-			CPPUNIT_ASSERT_EQUAL(id1, id2);
-		}
-
-		void testGetIDForJID_DifferentJIDs() {
-			std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager());
-			int id1 = testling->getIDForJID(JID("foo@bar.com"));
-			int id2 = testling->getIDForJID(JID("foo@baz.com"));
-
-			CPPUNIT_ASSERT(id1 != id2);
-		}
-
-		void getJIDFromID() {
-			std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager());
-			int id = testling->addJID(JID("foo@bar.com"));
-
-			boost::optional<JID> result(testling->getJIDFromID(id));
-			CPPUNIT_ASSERT(result);
-			CPPUNIT_ASSERT_EQUAL(JID("foo@bar.com"), *result);
-		}
-
-		void getJIDFromID_UnexistingID() {
-			std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager());
-
-			boost::optional<JID> result(testling->getJIDFromID(1));
-
-			CPPUNIT_ASSERT(!result);
-		}
-
-		void getIDFromJID() {
-			std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager());
-			int id = testling->addJID(JID("foo@bar.com"));
-
-			boost::optional<int> result(testling->getIDFromJID(JID("foo@bar.com")));
-			CPPUNIT_ASSERT(result);
-			CPPUNIT_ASSERT_EQUAL(id, *result);
-		}
-
-		void getIDFromJID_UnexistingJID() {
-			std::auto_ptr<SQLiteHistoryManager> testling(createHistoryManager());
-
-			boost::optional<int> result(testling->getIDFromJID(JID("foo@bar.com")));
-
-			CPPUNIT_ASSERT(!result);
-		}
-
-	private:
-		SQLiteHistoryManager* createHistoryManager() {
-			return new SQLiteHistoryManager(":memory:");
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(SQLiteHistoryManagerTest);
diff --git a/Swiften/JID/JID.cpp b/Swiften/JID/JID.cpp
deleted file mode 100644
index 3be8386..0000000
--- a/Swiften/JID/JID.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-#include <stringprep.h>
-#include <vector>
-#include <iostream>
-
-#include "Swiften/JID/JID.h"
-#include "Swiften/StringPrep/StringPrep.h"
-
-namespace Swift {
-
-JID::JID(const char* jid) {
-	initializeFromString(String(jid));
-}
-
-JID::JID(const String& jid) {
-	initializeFromString(jid);
-}
-
-JID::JID(const String& node, const String& domain) : hasResource_(false) {
-	nameprepAndSetComponents(node, domain, "");
-}
-
-JID::JID(const String& node, const String& domain, const String& resource) : hasResource_(true) {
-	nameprepAndSetComponents(node, domain, resource);
-}
-
-void JID::initializeFromString(const String& jid) {
-	if (jid.beginsWith('@')) {
-		return;
-	}
-
-	String bare, resource;
-	size_t slashIndex = jid.find('/');
-	if (slashIndex != jid.npos()) {
-		hasResource_ = true;
-		bare = jid.getSubstring(0, slashIndex);
-		resource = jid.getSubstring(slashIndex + 1, jid.npos());
-	}
-	else {
-		hasResource_ = false;
-		bare = jid;
-	}
-	std::pair<String,String> nodeAndDomain = bare.getSplittedAtFirst('@');
-	if (nodeAndDomain.second.isEmpty()) {
-		nameprepAndSetComponents("", nodeAndDomain.first, resource);
-	}
-	else {
-		nameprepAndSetComponents(nodeAndDomain.first, nodeAndDomain.second, resource);
-	}
-}
-
-
-void JID::nameprepAndSetComponents(const String& node, const String& domain, const String& resource) {
-	node_ = StringPrep::getPrepared(node, StringPrep::NamePrep);
-	domain_ = StringPrep::getPrepared(domain, StringPrep::XMPPNodePrep);
-	resource_ = StringPrep::getPrepared(resource, StringPrep::XMPPResourcePrep);
-}
-
-String JID::toString() const {
-	String string;
-	if (!node_.isEmpty()) {
-		string += node_ + "@";
-	}
-	string += domain_;
-	if (!isBare()) {
-		string += "/" + resource_;
-	}
-	return string;
-}
-
-int JID::compare(const Swift::JID& o, CompareType compareType) const {
-	if (node_ < o.node_) { return -1; }
-	if (node_ > o.node_) { return 1; }
-	if (domain_ < o.domain_) { return -1; }
-	if (domain_ > o.domain_) { return 1; }
-	if (compareType == WithResource) {
-		if (hasResource_ != o.hasResource_) {
-			return hasResource_ ? 1 : -1;
-		}
-		if (resource_ < o.resource_) { return -1; }
-		if (resource_ > o.resource_) { return 1; }
-	}
-	return 0;
-}
-
-} // namespace Swift
-
diff --git a/Swiften/JID/JID.h b/Swiften/JID/JID.h
deleted file mode 100644
index 0bfb858..0000000
--- a/Swiften/JID/JID.h
+++ /dev/null
@@ -1,80 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class JID {
-		public:
-			enum CompareType {
-				WithResource, WithoutResource
-			};
-
-			explicit JID(const String& = String());
-			explicit JID(const char*);
-			JID(const String& node, const String& domain);
-			JID(const String& node, const String& domain, const String& resource);
-
-			bool isValid() const {
-				return !domain_.isEmpty(); /* FIXME */
-			}
-
-			const String& getNode() const {
-				return node_;
-			}
-			const String& getDomain() const {
-				return domain_;
-			}
-			const String& getResource() const {
-				return resource_;
-			}
-			bool isBare() const {
-				return !hasResource_;
-			}
-
-			JID toBare() const {
-				return JID(getNode(), getDomain()); /* FIXME: Duplicate unnecessary nameprepping. Probably ok. */
-			}
-
-			String toString() const;
-
-			bool equals(const JID& o, CompareType compareType) const {
-				return compare(o, compareType) == 0;
-			}
-
-			int compare(const JID& o, CompareType compareType) const;
-
-			operator String() const {
-				return toString();
-			}
-
-			bool operator<(const Swift::JID& b) const {
-				return compare(b, Swift::JID::WithResource) < 0;
-			}
-
-			friend std::ostream& operator<<(std::ostream& os, const Swift::JID& j) {
-				os << j.toString();
-				return os;
-			}
-
-			friend bool operator==(const Swift::JID& a, const Swift::JID& b) {
-				return a.compare(b, Swift::JID::WithResource) == 0;
-			}
-
-			friend bool operator!=(const Swift::JID& a, const Swift::JID& b) {
-				return a.compare(b, Swift::JID::WithResource) != 0;
-			}
-
-		protected:
-			void nameprepAndSetComponents(const String& node, const String& domain,
-					const String& resource);
-
-		private:
-			void initializeFromString(const String&);
-	
-		private:
-			String node_;
-			String domain_;
-			bool hasResource_;
-			String resource_;
-	};
-}
diff --git a/Swiften/JID/SConscript b/Swiften/JID/SConscript
deleted file mode 100644
index d48fbb0..0000000
--- a/Swiften/JID/SConscript
+++ /dev/null
@@ -1,9 +0,0 @@
-Import("swiften_env")
-
-myenv = swiften_env.Clone()
-myenv.MergeFlags(swiften_env["LIBIDN_FLAGS"])
-
-objects = myenv.StaticObject([
-			"JID.cpp",
-		])
-swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/JID/UnitTest/JIDTest.cpp b/Swiften/JID/UnitTest/JIDTest.cpp
deleted file mode 100644
index 917f89f..0000000
--- a/Swiften/JID/UnitTest/JIDTest.cpp
+++ /dev/null
@@ -1,310 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/JID/JID.h"
-
-using namespace Swift;
-
-class JIDTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(JIDTest);
-		CPPUNIT_TEST(testConstructorWithString);
-		CPPUNIT_TEST(testConstructorWithString_NoResource);
-		CPPUNIT_TEST(testConstructorWithString_NoNode);
-		CPPUNIT_TEST(testConstructorWithString_EmptyResource);
-		CPPUNIT_TEST(testConstructorWithString_OnlyDomain);
-		CPPUNIT_TEST(testConstructorWithString_UpperCaseNode);
-		CPPUNIT_TEST(testConstructorWithString_UpperCaseDomain);
-		CPPUNIT_TEST(testConstructorWithString_UpperCaseResource);
-		CPPUNIT_TEST(testConstructorWithString_EmptyNode);
-		CPPUNIT_TEST(testConstructorWithStrings);
-		CPPUNIT_TEST(testIsBare);
-		CPPUNIT_TEST(testIsBare_NotBare);
-		CPPUNIT_TEST(testToBare);
-		CPPUNIT_TEST(testToBare_EmptyNode);
-		CPPUNIT_TEST(testToBare_EmptyResource);
-		CPPUNIT_TEST(testToString);
-		CPPUNIT_TEST(testToString_EmptyNode);
-		CPPUNIT_TEST(testToString_EmptyResource);
-		CPPUNIT_TEST(testToString_NoResource);
-		CPPUNIT_TEST(testCompare_SmallerNode);
-		CPPUNIT_TEST(testCompare_LargerNode);
-		CPPUNIT_TEST(testCompare_SmallerDomain);
-		CPPUNIT_TEST(testCompare_LargerDomain);
-		CPPUNIT_TEST(testCompare_SmallerResource);
-		CPPUNIT_TEST(testCompare_LargerResource);
-		CPPUNIT_TEST(testCompare_Equal);
-		CPPUNIT_TEST(testCompare_EqualWithoutResource);
-		CPPUNIT_TEST(testCompare_NoResourceAndEmptyResource);
-		CPPUNIT_TEST(testCompare_EmptyResourceAndNoResource);
-		CPPUNIT_TEST(testEquals);
-		CPPUNIT_TEST(testEquals_NotEqual);
-		CPPUNIT_TEST(testEquals_WithoutResource);
-		CPPUNIT_TEST(testSmallerThan);
-		CPPUNIT_TEST(testSmallerThan_Equal);
-		CPPUNIT_TEST(testSmallerThan_Larger);
-		CPPUNIT_TEST(testHasResource);
-		CPPUNIT_TEST(testHasResource_NoResource);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		JIDTest() {}
-
-		void testConstructorWithString() {
-			JID testling("foo@bar/baz");
-
-			CPPUNIT_ASSERT_EQUAL(String("foo"), testling.getNode());
-			CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain());
-			CPPUNIT_ASSERT_EQUAL(String("baz"), testling.getResource());
-			CPPUNIT_ASSERT(!testling.isBare());
-		}
-
-		void testConstructorWithString_NoResource() {
-			JID testling("foo@bar");
-
-			CPPUNIT_ASSERT_EQUAL(String("foo"), testling.getNode());
-			CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain());
-			CPPUNIT_ASSERT_EQUAL(String(""), testling.getResource());
-			CPPUNIT_ASSERT(testling.isBare());
-		}
-
-		void testConstructorWithString_EmptyResource() {
-			JID testling("bar/");
-
-			CPPUNIT_ASSERT(testling.isValid());
-			CPPUNIT_ASSERT(!testling.isBare());
-		}
-
-		void testConstructorWithString_NoNode() {
-			JID testling("bar/baz");
-
-			CPPUNIT_ASSERT_EQUAL(String(""), testling.getNode());
-			CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain());
-			CPPUNIT_ASSERT_EQUAL(String("baz"), testling.getResource());
-			CPPUNIT_ASSERT(!testling.isBare());
-		}
-
-		void testConstructorWithString_OnlyDomain() {
-			JID testling("bar");
-
-			CPPUNIT_ASSERT_EQUAL(String(""), testling.getNode());
-			CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain());
-			CPPUNIT_ASSERT_EQUAL(String(""), testling.getResource());
-			CPPUNIT_ASSERT(testling.isBare());
-		}
-
-		void testConstructorWithString_UpperCaseNode() {
-			JID testling("Fo\xCE\xA9@bar");
-
-			CPPUNIT_ASSERT_EQUAL(String("fo\xCF\x89"), testling.getNode());
-			CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain());
-		}
-
-		void testConstructorWithString_UpperCaseDomain() {
-			JID testling("Fo\xCE\xA9");
-
-			CPPUNIT_ASSERT_EQUAL(String("fo\xCF\x89"), testling.getDomain());
-		}
-
-		void testConstructorWithString_UpperCaseResource() {
-			JID testling("bar/Fo\xCE\xA9");
-
-			CPPUNIT_ASSERT_EQUAL(testling.getResource(), String("Fo\xCE\xA9"));
-		}
-
-		void testConstructorWithString_EmptyNode() {
-			JID testling("@bar");
-
-			CPPUNIT_ASSERT(!testling.isValid());
-		}
-
-		void testConstructorWithStrings() {
-			JID testling("foo", "bar", "baz");
-
-			CPPUNIT_ASSERT_EQUAL(String("foo"), testling.getNode());
-			CPPUNIT_ASSERT_EQUAL(String("bar"), testling.getDomain());
-			CPPUNIT_ASSERT_EQUAL(String("baz"), testling.getResource());
-		}
-
-		void testIsBare() {
-			CPPUNIT_ASSERT(JID("foo@bar").isBare());
-		}
-
-		void testIsBare_NotBare() {
-			CPPUNIT_ASSERT(!JID("foo@bar/baz").isBare());
-		}
-
-		void testToBare() {
-			JID testling("foo@bar/baz");
-
-			CPPUNIT_ASSERT_EQUAL(String("foo"), testling.toBare().getNode());
-			CPPUNIT_ASSERT_EQUAL(String("bar"), testling.toBare().getDomain());
-			CPPUNIT_ASSERT(testling.toBare().isBare());
-		}
-
-		void testToBare_EmptyNode() {
-			JID testling("bar/baz");
-
-			CPPUNIT_ASSERT_EQUAL(String(""), testling.toBare().getNode());
-			CPPUNIT_ASSERT_EQUAL(String("bar"), testling.toBare().getDomain());
-			CPPUNIT_ASSERT(testling.toBare().isBare());
-		}
-
-		void testToBare_EmptyResource() {
-			JID testling("bar/");
-
-			CPPUNIT_ASSERT_EQUAL(String(""), testling.toBare().getNode());
-			CPPUNIT_ASSERT_EQUAL(String("bar"), testling.toBare().getDomain());
-			CPPUNIT_ASSERT(testling.toBare().isBare());
-		}
-
-		void testToString() {
-			JID testling("foo@bar/baz");
-
-			CPPUNIT_ASSERT_EQUAL(String("foo@bar/baz"), testling.toString());
-		}
-
-		void testToString_EmptyNode() {
-			JID testling("bar/baz");
-
-			CPPUNIT_ASSERT_EQUAL(String("bar/baz"), testling.toString());
-		}
-
-		void testToString_NoResource() {
-			JID testling("foo@bar");
-
-			CPPUNIT_ASSERT_EQUAL(String("foo@bar"), testling.toString());
-		}
-
-		void testToString_EmptyResource() {
-			JID testling("foo@bar/");
-
-			CPPUNIT_ASSERT_EQUAL(String("foo@bar/"), testling.toString());
-		}
-
-		void testCompare_SmallerNode() {
-			JID testling1("a@c");
-			JID testling2("b@b");
-
-			CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource));
-		}
-
-		void testCompare_LargerNode() {
-			JID testling1("c@a");
-			JID testling2("b@b");
-
-			CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource));
-		}
-
-		void testCompare_SmallerDomain() {
-			JID testling1("x@a/c");
-			JID testling2("x@b/b");
-
-			CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource));
-		}
-
-		void testCompare_LargerDomain() {
-			JID testling1("x@b/b");
-			JID testling2("x@a/c");
-
-			CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource));
-		}
-
-		void testCompare_SmallerResource() {
-			JID testling1("x@y/a");
-			JID testling2("x@y/b");
-
-			CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource));
-		}
-
-		void testCompare_LargerResource() {
-			JID testling1("x@y/b");
-			JID testling2("x@y/a");
-
-			CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource));
-		}
-
-		void testCompare_Equal() {
-			JID testling1("x@y/z");
-			JID testling2("x@y/z");
-
-			CPPUNIT_ASSERT_EQUAL(0, testling1.compare(testling2, JID::WithResource));
-		}
-
-		void testCompare_EqualWithoutResource() {
-			JID testling1("x@y/a");
-			JID testling2("x@y/b");
-
-			CPPUNIT_ASSERT_EQUAL(0, testling1.compare(testling2, JID::WithoutResource));
-		}
-
-		void testCompare_NoResourceAndEmptyResource() {
-			JID testling1("x@y/");
-			JID testling2("x@y");
-
-			CPPUNIT_ASSERT_EQUAL(1, testling1.compare(testling2, JID::WithResource));
-		}
-
-		void testCompare_EmptyResourceAndNoResource() {
-			JID testling1("x@y");
-			JID testling2("x@y/");
-
-			CPPUNIT_ASSERT_EQUAL(-1, testling1.compare(testling2, JID::WithResource));
-		}
-
-		void testEquals() {
-			JID testling1("x@y/c");
-			JID testling2("x@y/c");
-
-			CPPUNIT_ASSERT(testling1.equals(testling2, JID::WithResource));
-		}
-
-		void testEquals_NotEqual() {
-			JID testling1("x@y/c");
-			JID testling2("x@y/d");
-
-			CPPUNIT_ASSERT(!testling1.equals(testling2, JID::WithResource));
-		}
-
-		void testEquals_WithoutResource() {
-			JID testling1("x@y/c");
-			JID testling2("x@y/d");
-
-			CPPUNIT_ASSERT(testling1.equals(testling2, JID::WithoutResource));
-		}
-
-		void testSmallerThan() {
-			JID testling1("x@y/c");
-			JID testling2("x@y/d");
-
-			CPPUNIT_ASSERT(testling1 < testling2);
-		}
-
-		void testSmallerThan_Equal() {
-			JID testling1("x@y/d");
-			JID testling2("x@y/d");
-
-			CPPUNIT_ASSERT(!(testling1 < testling2));
-		}
-
-		void testSmallerThan_Larger() {
-			JID testling1("x@y/d");
-			JID testling2("x@y/c");
-
-			CPPUNIT_ASSERT(!(testling1 < testling2));
-		}
-
-		void testHasResource() {
-			JID testling("x@y/d");
-
-			CPPUNIT_ASSERT(!testling.isBare());
-		}
-
-		void testHasResource_NoResource() {
-			JID testling("x@y");
-
-			CPPUNIT_ASSERT(testling.isBare());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(JIDTest);
diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiBrowseQuery.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiBrowseQuery.h
deleted file mode 100644
index 229f97e..0000000
--- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiBrowseQuery.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#pragma once
-
-#include <boost/bind.hpp>
-
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-	class AvahiQuerier;
-
-	class AvahiBrowseQuery : public DNSSDBrowseQuery, public AvahiQuery {
-		public:	
-			AvahiBrowseQuery(boost::shared_ptr<AvahiQuerier> q) : AvahiQuery(q) {
-			}
-
-			void startBrowsing() {
-				std::cout << "Start browsing" << std::endl;
-				avahi_threaded_poll_lock(querier->getThreadedPoll());
-				std::cout << "Creating browser" << std::endl;
-				AvahiServiceBrowser* browser = avahi_service_browser_new(querier->getClient(), AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, "_presence._tcp", NULL, (AvahiLookupFlags) 0, &handleServiceDiscoveredStatic, this);
-				if (!browser) {
-					std::cout << "Error" << std::endl;
-					MainEventLoop::postEvent(boost::bind(boost::ref(onError)), shared_from_this());
-				}
-				std::cout << "Unlocking" << std::endl;
-				avahi_threaded_poll_unlock(querier->getThreadedPoll());
-				std::cout << "Browse started" << std::endl;
-			}
-
-			void stopBrowsing() {
-				// TODO
-			}
-
-		private:
-			static void handleServiceDiscoveredStatic(AvahiServiceBrowser *b, AvahiIfIndex interfaceIndex, AvahiProtocol protocol, AvahiBrowserEvent event, const char *name, const char *type, const char *domain, AvahiLookupResultFlags flags, void* context) {
-				static_cast<AvahiBrowseQuery*>(context)->handleServiceDiscovered(b, interfaceIndex, protocol, event, name, type, domain, flags);
-			}
-
-			void handleServiceDiscovered(AvahiServiceBrowser *, AvahiIfIndex interfaceIndex, AvahiProtocol, AvahiBrowserEvent event, const char *name, const char *type, const char *domain, AvahiLookupResultFlags) {
-				switch (event) {
-					case AVAHI_BROWSER_FAILURE:	
-						std::cout << "Service browse error" << std::endl;
-						MainEventLoop::postEvent(boost::bind(boost::ref(onError)), shared_from_this());
-						break;
-					case AVAHI_BROWSER_NEW: {
-						DNSSDServiceID service(name, domain, type, interfaceIndex);
-						std::cout << "Service discovered " << name << " " << type << " " << domain << std::endl;
-						MainEventLoop::postEvent(boost::bind(boost::ref(onServiceAdded), service), shared_from_this());
-						break;
-					}
-					case AVAHI_BROWSER_REMOVE: {
-						std::cout << "Service went away " << name << " " << type << " " << domain << std::endl;
-						DNSSDServiceID service(name, domain, type, interfaceIndex);
-						MainEventLoop::postEvent(boost::bind(boost::ref(onServiceRemoved), service), shared_from_this());
-						break;
-					}
-					case AVAHI_BROWSER_ALL_FOR_NOW:
-					case AVAHI_BROWSER_CACHE_EXHAUSTED:
-						break;
-				}
-			}
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.cpp b/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.cpp
deleted file mode 100644
index c4bfcb4..0000000
--- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h"
-
-#include <iostream>
-
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiBrowseQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveServiceQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveHostnameQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiRegisterQuery.h"
-
-namespace Swift {
-
-AvahiQuerier::AvahiQuerier() : client(NULL), threadedPoll(NULL) {
-}
-
-AvahiQuerier::~AvahiQuerier() {
-}
-
-boost::shared_ptr<DNSSDBrowseQuery> AvahiQuerier::createBrowseQuery() {
-	return boost::shared_ptr<DNSSDBrowseQuery>(new AvahiBrowseQuery(shared_from_this()));
-}
-
-boost::shared_ptr<DNSSDRegisterQuery> AvahiQuerier::createRegisterQuery(const String& name, int port, const ByteArray& info) {
-	return boost::shared_ptr<DNSSDRegisterQuery>(new AvahiRegisterQuery(name, port, info, shared_from_this()));
-}
-
-boost::shared_ptr<DNSSDResolveServiceQuery> AvahiQuerier::createResolveServiceQuery(const DNSSDServiceID& service) {
-	return boost::shared_ptr<DNSSDResolveServiceQuery>(new AvahiResolveServiceQuery(service, shared_from_this()));
-}
-
-boost::shared_ptr<DNSSDResolveHostnameQuery> AvahiQuerier::createResolveHostnameQuery(const String& hostname, int interfaceIndex) {
-	return boost::shared_ptr<DNSSDResolveHostnameQuery>(new AvahiResolveHostnameQuery(hostname, interfaceIndex, shared_from_this()));
-}
-
-void AvahiQuerier::start() {
-	std::cout << "Starrting querier" << std::endl;
-	assert(!threadedPoll);
-	threadedPoll = avahi_threaded_poll_new();
-	int error;
-	assert(!client);
-	client = avahi_client_new(
-			avahi_threaded_poll_get(threadedPoll), 
-			static_cast<AvahiClientFlags>(0), NULL, this, &error); // TODO
-	if (!client) {
-		// TODO
-		std::cerr << "Avahi Error: " << avahi_strerror(error) << std::endl;
-		return;
-	}
-	std::cout << "Starrting event loop" << std::endl;
-	avahi_threaded_poll_start(threadedPoll);
-}
-
-void AvahiQuerier::stop() {
-	assert(threadedPoll);
-	avahi_threaded_poll_stop(threadedPoll);
-	assert(client);
-	avahi_client_free(client);
-	avahi_threaded_poll_free(threadedPoll);
-}
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h
deleted file mode 100644
index ffb8441..0000000
--- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <avahi-client/client.h>
-#include <avahi-client/lookup.h>
-#include <avahi-common/thread-watch.h>
-#include <avahi-common/watch.h>
-#include <avahi-common/malloc.h>
-#include <avahi-common/error.h>
-
-#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h"
-
-namespace Swift {
-	class ByteArray;
-
-	class AvahiQuerier : 
-			public DNSSDQuerier, 
-			public boost::enable_shared_from_this<AvahiQuerier> {
-		public:
-			AvahiQuerier();
-			~AvahiQuerier();
-
-			boost::shared_ptr<DNSSDBrowseQuery> createBrowseQuery();
-			boost::shared_ptr<DNSSDRegisterQuery> createRegisterQuery(
-					const String& name, int port, const ByteArray& info);
-			boost::shared_ptr<DNSSDResolveServiceQuery> createResolveServiceQuery(
-					const DNSSDServiceID&);
-			boost::shared_ptr<DNSSDResolveHostnameQuery> createResolveHostnameQuery(
-					const String& hostname, int interfaceIndex);
-
-			void start();
-			void stop();
-			
-			AvahiThreadedPoll* getThreadedPoll() const {
-				return threadedPoll;
-			}
-
-			AvahiClient* getClient() const {
-				return client;
-			}
-
-		private:
-			AvahiClient* client;
-			AvahiThreadedPoll* threadedPoll;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.cpp b/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.cpp
deleted file mode 100644
index 6b7c7f9..0000000
--- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h"
-
-namespace Swift {
-
-AvahiQuery::AvahiQuery(boost::shared_ptr<AvahiQuerier> q) : querier(q) {
-}
-
-AvahiQuery::~AvahiQuery() {
-}
-
-}
-
diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h
deleted file mode 100644
index 847f3f7..0000000
--- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "Swiften/EventLoop/EventOwner.h"
-
-namespace Swift {
-	class AvahiQuerier;
-
-	class AvahiQuery : 
-			public EventOwner,
-			public boost::enable_shared_from_this<AvahiQuery> {
-		public:
-			AvahiQuery(boost::shared_ptr<AvahiQuerier>);
-			virtual ~AvahiQuery();
-			
-		protected:
-			boost::shared_ptr<AvahiQuerier> querier;
-	};
-}
-
diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiRegisterQuery.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiRegisterQuery.h
deleted file mode 100644
index f42950e..0000000
--- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiRegisterQuery.h
+++ /dev/null
@@ -1,123 +0,0 @@
-#pragma once
-
-#include <avahi-client/publish.h>
-
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-	class AvahiQuerier;
-
-	class AvahiRegisterQuery : public DNSSDRegisterQuery, public AvahiQuery {
-		public:	
-			AvahiRegisterQuery(const String& name, int port, const ByteArray& txtRecord, boost::shared_ptr<AvahiQuerier> querier) : AvahiQuery(querier), name(name), port(port), txtRecord(txtRecord), group(0) {
-			}
-
-			void registerService() {
-				std::cout << "Registering service " << name << ":" << port << std::endl;
-				avahi_threaded_poll_lock(querier->getThreadedPoll());
-				if (!group) {
-					std::cout << "Creating entry group" << std::endl;
-					group = avahi_entry_group_new(querier->getClient(), handleEntryGroupChange, this);
-					if (!group) {
-						std::cout << "Error ceating entry group" << std::endl;
-						MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this());
-					}
-				}
-
-				doRegisterService();
-				avahi_threaded_poll_unlock(querier->getThreadedPoll());
-			}
-
-			void unregisterService() {
-			}
-
-			void updateServiceInfo(const ByteArray& txtRecord) {
-				this->txtRecord = txtRecord;
-				avahi_threaded_poll_lock(querier->getThreadedPoll());
-				assert(group);
-				avahi_entry_group_reset(group);
-				doRegisterService();
-				avahi_threaded_poll_unlock(querier->getThreadedPoll());
-			}
-
-		private:
-			void doRegisterService() {
-				AvahiStringList* txtList;
-				avahi_string_list_parse(txtRecord.getData(), txtRecord.getSize(), &txtList);
-
-				int result = avahi_entry_group_add_service_strlst(group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, (AvahiPublishFlags) 0, name.getUTF8Data(), "_presence._tcp", NULL, NULL, port, txtList);
-				if (result < 0) {
-					std::cout << "Error registering service: " << avahi_strerror(result) << std::endl;
-					MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this());
-				}
-				result = avahi_entry_group_commit(group);
-				if (result < 0) {
-					std::cout << "Error registering service: " << avahi_strerror(result) << std::endl;
-				}
-			}
-
-			static void handleEntryGroupChange(AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata) {
-				static_cast<AvahiRegisterQuery*>(userdata)->handleEntryGroupChange(g, state);
-			}
-
-			void handleEntryGroupChange(AvahiEntryGroup* g, AvahiEntryGroupState state) {
-				std::cout << "ENtry group callback: " << state << std::endl;
-				switch (state) {
-					case AVAHI_ENTRY_GROUP_ESTABLISHED :
-						// Domain is a hack!
-						MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>(DNSSDServiceID(name, "local", "_presence._tcp", 0))), shared_from_this());
-						std::cout << "Entry group established" << std::endl;
-						break;
-				case AVAHI_ENTRY_GROUP_COLLISION : {
-						std::cout << "Entry group collision" << std::endl;
-						/*char *n;
-						n = avahi_alternative_service_name(name);
-						avahi_free(name);
-						name = n;*/
-						break;
-				}
-
-				case AVAHI_ENTRY_GROUP_FAILURE :
-						std::cout << "Entry group failure " << avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g))) << std::endl;
-						break;
-
-				case AVAHI_ENTRY_GROUP_UNCOMMITED:
-				case AVAHI_ENTRY_GROUP_REGISTERING:
-						;
-
-				/*
-				DNSServiceErrorType result = DNSServiceRegister(
-						&sdRef, 0, 0, name.getUTF8Data(), "_presence._tcp", NULL, NULL, port, 
-						txtRecord.getSize(), txtRecord.getData(), 
-						&AvahiRegisterQuery::handleServiceRegisteredStatic, this);
-				if (result != kDNSServiceErr_NoError) {
-					sdRef = NULL;
-				}*/
-				//MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this());
-			}
-		}
-
-/*
-			static void handleServiceRegisteredStatic(DNSServiceRef, DNSServiceFlags, DNSServiceErrorType errorCode, const char *name, const char *regtype, const char *domain, void *context) {
-				static_cast<AvahiRegisterQuery*>(context)->handleServiceRegistered(errorCode, name, regtype, domain);
-			}
-
-			void handleServiceRegistered(DNSServiceErrorType errorCode, const char *name, const char *regtype, const char *domain) {
-				if (errorCode != kDNSServiceErr_NoError) {
-					MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this());
-				}
-				else {
-				}
-			}
-			*/
-
-		private:
-			String name;
-			int port;
-			ByteArray txtRecord;
-			AvahiEntryGroup* group;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveHostnameQuery.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveHostnameQuery.h
deleted file mode 100644
index ee0e837..0000000
--- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveHostnameQuery.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-#include "Swiften/Network/HostAddress.h"
-
-#include <netinet/in.h>
-
-namespace Swift {
-	class AvahiQuerier;
-
-	class AvahiResolveHostnameQuery : public DNSSDResolveHostnameQuery, public AvahiQuery {
-		public: 
-			AvahiResolveHostnameQuery(const String& hostname, int, boost::shared_ptr<AvahiQuerier> querier) : AvahiQuery(querier), hostname(hostname) {
-				std::cout << "Resolving hostname " << hostname << std::endl;
-			}
-
-			void run() {
-					MainEventLoop::postEvent(boost::bind(boost::ref(onHostnameResolved), boost::optional<HostAddress>(HostAddress(hostname))), shared_from_this());
-			}
-
-			void finish() {
-			}
-
-		private:
-			HostAddress hostAddress;
-			String hostname;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveServiceQuery.h b/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveServiceQuery.h
deleted file mode 100644
index 8577837..0000000
--- a/Swiften/LinkLocal/DNSSD/Avahi/AvahiResolveServiceQuery.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#pragma once
-
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h"
-#include "Swiften/LinkLocal/LinkLocalServiceInfo.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-	class AvahiQuerier;
-
-	class AvahiResolveServiceQuery : public DNSSDResolveServiceQuery, public AvahiQuery {
-		public:	
-			AvahiResolveServiceQuery(const DNSSDServiceID& service, boost::shared_ptr<AvahiQuerier> querier) : AvahiQuery(querier), service(service), resolver(NULL) {
-			}
-
-			void start() {
-				std::cout << "Resolving " << service.getName() << std::endl;
-				avahi_threaded_poll_lock(querier->getThreadedPoll());
-				assert(!resolver);
-				resolver = avahi_service_resolver_new(querier->getClient(), service.getNetworkInterfaceID(), AVAHI_PROTO_UNSPEC, service.getName().getUTF8Data(), service.getType().getUTF8Data(), service.getDomain().getUTF8Data(), AVAHI_PROTO_UNSPEC, (AvahiLookupFlags) 0, handleServiceResolvedStatic, this);
-				if (!resolver) {
-					std::cout << "Error starting resolver" << std::endl;
-					MainEventLoop::postEvent(boost::bind(boost::ref(onServiceResolved), boost::optional<Result>()), shared_from_this());
-				}
-				avahi_threaded_poll_unlock(querier->getThreadedPoll());
-			}
-
-			void stop() {
-				avahi_threaded_poll_lock(querier->getThreadedPoll());
-				avahi_service_resolver_free(resolver);
-				resolver = NULL;
-				avahi_threaded_poll_unlock(querier->getThreadedPoll());
-			}
-
-		private:
-			static void handleServiceResolvedStatic(AvahiServiceResolver* resolver, AvahiIfIndex interfaceIndex, AvahiProtocol protocol, AvahiResolverEvent event, const char *name, const char *type, const char *domain, const char *host_name, const AvahiAddress *address, uint16_t port, AvahiStringList *txt, AvahiLookupResultFlags flags, void* context) {
-				static_cast<AvahiResolveServiceQuery*>(context)->handleServiceResolved(resolver, interfaceIndex, protocol, event, name, type, domain, host_name, address, port, txt, flags);
-			}
-
-			void handleServiceResolved(AvahiServiceResolver* resolver, AvahiIfIndex, AvahiProtocol, AvahiResolverEvent event, const char *name, const char * type, const char* domain, const char * /*host_name*/, const AvahiAddress *address, uint16_t port, AvahiStringList *txt, AvahiLookupResultFlags) {
-				std::cout << "Resolve finished" << std::endl;
-				switch(event) {
-					case AVAHI_RESOLVER_FAILURE:
-						std::cout << "Resolve error " << avahi_strerror(avahi_client_errno(avahi_service_resolver_get_client(resolver))) << std::endl;
-						MainEventLoop::postEvent(boost::bind(boost::ref(onServiceResolved), boost::optional<Result>()), shared_from_this());
-						break;
-					case AVAHI_RESOLVER_FOUND: {
-						char a[AVAHI_ADDRESS_STR_MAX];
-						avahi_address_snprint(a, sizeof(a), address);
-
-						ByteArray txtRecord;
-						txtRecord.resize(1024);
-						avahi_string_list_serialize(txt, txtRecord.getData(), txtRecord.getSize());
-
-						// FIXME: Probably not accurate
-						String fullname = String(name) + "." + String(type) + "." + String(domain) + ".";
-						std::cout << "Result: " << fullname << "->" << String(a) << ":" << port << std::endl;
-						MainEventLoop::postEvent(
-								boost::bind(
-									boost::ref(onServiceResolved), 
-									Result(fullname, String(a), port, txtRecord)),
-								shared_from_this());
-						break;
-					}
-				}
-			}
-
-		private:
-			DNSSDServiceID service;
-			AvahiServiceResolver* resolver;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourBrowseQuery.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourBrowseQuery.h
deleted file mode 100644
index 2dec2fb..0000000
--- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourBrowseQuery.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#pragma once
-
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-	class BonjourQuerier;
-
-	class BonjourBrowseQuery : public DNSSDBrowseQuery, public BonjourQuery {
-		public:	
-			BonjourBrowseQuery(boost::shared_ptr<BonjourQuerier> q) : BonjourQuery(q) {
-				DNSServiceErrorType result = DNSServiceBrowse(
-						&sdRef, 0, 0, "_presence._tcp", 0, 
-						&BonjourBrowseQuery::handleServiceDiscoveredStatic, this);
-				if (result != kDNSServiceErr_NoError) {
-					sdRef = NULL;
-				}
-			}
-
-			void startBrowsing() {
-				if (!sdRef) {
-					MainEventLoop::postEvent(boost::bind(boost::ref(onError)), shared_from_this());
-				}
-				else {
-					run();
-				}
-			}
-
-			void stopBrowsing() {
-				finish();
-			}
-
-		private:
-			static void handleServiceDiscoveredStatic(DNSServiceRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char *name, const char *type, const char *domain, void *context) {
-				static_cast<BonjourBrowseQuery*>(context)->handleServiceDiscovered(flags, interfaceIndex, errorCode, name, type, domain);
-			}
-
-			void handleServiceDiscovered(DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char *name, const char *type, const char *domain) {
-				if (errorCode != kDNSServiceErr_NoError) {
-					MainEventLoop::postEvent(boost::bind(boost::ref(onError)), shared_from_this());
-				}
-				else {
-					//std::cout << "Discovered service: name:" << name << " domain:" << domain << " type: " << type << std::endl;
-					DNSSDServiceID service(name, domain, type, interfaceIndex);
-					if (flags & kDNSServiceFlagsAdd) {
-						MainEventLoop::postEvent(boost::bind(boost::ref(onServiceAdded), service), shared_from_this());
-					}
-					else {
-						MainEventLoop::postEvent(boost::bind(boost::ref(onServiceRemoved), service), shared_from_this());
-					}
-				}
-			}
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.cpp b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.cpp
deleted file mode 100644
index 9c9e64e..0000000
--- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h"
-
-#include <unistd.h>
-#include <sys/socket.h>
-#include <fcntl.h>
-
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourBrowseQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourRegisterQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveServiceQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveHostnameQuery.h"
-#include "Swiften/Base/foreach.h"
-
-namespace Swift {
-
-BonjourQuerier::BonjourQuerier() : stopRequested(false), thread(0) {
-	int fds[2];
-	int result = pipe(fds);
-	assert(result == 0);
-	interruptSelectReadSocket = fds[0];
-	fcntl(interruptSelectReadSocket, F_SETFL, fcntl(interruptSelectReadSocket, F_GETFL)|O_NONBLOCK);
-	interruptSelectWriteSocket = fds[1];
-}
-
-BonjourQuerier::~BonjourQuerier() {
-	assert(!thread);
-}
-
-boost::shared_ptr<DNSSDBrowseQuery> BonjourQuerier::createBrowseQuery() {
-	return boost::shared_ptr<DNSSDBrowseQuery>(new BonjourBrowseQuery(shared_from_this()));
-}
-
-boost::shared_ptr<DNSSDRegisterQuery> BonjourQuerier::createRegisterQuery(const String& name, int port, const ByteArray& info) {
-	return boost::shared_ptr<DNSSDRegisterQuery>(new BonjourRegisterQuery(name, port, info, shared_from_this()));
-}
-
-boost::shared_ptr<DNSSDResolveServiceQuery> BonjourQuerier::createResolveServiceQuery(const DNSSDServiceID& service) {
-	return boost::shared_ptr<DNSSDResolveServiceQuery>(new BonjourResolveServiceQuery(service, shared_from_this()));
-}
-
-boost::shared_ptr<DNSSDResolveHostnameQuery> BonjourQuerier::createResolveHostnameQuery(const String& hostname, int interfaceIndex) {
-	return boost::shared_ptr<DNSSDResolveHostnameQuery>(new BonjourResolveHostnameQuery(hostname, interfaceIndex, shared_from_this()));
-}
-
-void BonjourQuerier::addRunningQuery(boost::shared_ptr<BonjourQuery> query) {
-	{
-		boost::lock_guard<boost::mutex> lock(runningQueriesMutex);
-		runningQueries.push_back(query);
-	}
-	runningQueriesAvailableEvent.notify_one();
-	interruptSelect();
-}
-
-void BonjourQuerier::removeRunningQuery(boost::shared_ptr<BonjourQuery> query) {
-	{
-		boost::lock_guard<boost::mutex> lock(runningQueriesMutex);
-		runningQueries.erase(std::remove(
-			runningQueries.begin(), runningQueries.end(), query), runningQueries.end());
-	}
-}
-
-void BonjourQuerier::interruptSelect() {
-	char c = 0;
-	write(interruptSelectWriteSocket, &c, 1);
-}
-
-void BonjourQuerier::start() {
-	assert(!thread);
-	thread = new boost::thread(boost::bind(&BonjourQuerier::run, shared_from_this()));
-}
-
-void BonjourQuerier::stop() {
-	if (thread) {
-		stopRequested = true;
-		assert(runningQueries.empty());
-		runningQueriesAvailableEvent.notify_one();
-		interruptSelect();
-		thread->join();
-		delete thread;
-		thread = NULL;
-		stopRequested = false;
-	}
-}
-
-void BonjourQuerier::run() {
-	while (!stopRequested) {
-		fd_set fdSet;
-		int maxSocket;
-		{
-			boost::unique_lock<boost::mutex> lock(runningQueriesMutex);
-			if (runningQueries.empty()) {
-				runningQueriesAvailableEvent.wait(lock);
-				if (runningQueries.empty()) {
-					continue;
-				}
-			}
-
-			// Run all running queries
-			FD_ZERO(&fdSet);
-			maxSocket = interruptSelectReadSocket;
-			FD_SET(interruptSelectReadSocket, &fdSet);
-
-			foreach(const boost::shared_ptr<BonjourQuery>& query, runningQueries) {
-				int socketID = query->getSocketID();
-				maxSocket = std::max(maxSocket, socketID);
-				FD_SET(socketID, &fdSet);
-			}
-		}
-
-		if (select(maxSocket+1, &fdSet, NULL, NULL, 0) <= 0) {
-			continue;
-		}
-
-		if (FD_ISSET(interruptSelectReadSocket, &fdSet)) {
-			char dummy;
-			while (read(interruptSelectReadSocket, &dummy, 1) > 0) {}
-		}
-
-		{
-			boost::lock_guard<boost::mutex> lock(runningQueriesMutex);
-			foreach(boost::shared_ptr<BonjourQuery> query, runningQueries) {
-				if (FD_ISSET(query->getSocketID(), &fdSet)) {
-					query->processResult();
-				}
-			}
-		}
-	}
-}
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h
deleted file mode 100644
index d12f94f..0000000
--- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <list>
-#include <boost/thread.hpp>
-#include <boost/thread/mutex.hpp>
-
-#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h"
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h"
-
-namespace Swift {
-	class ByteArray;
-
-	class BonjourQuerier : 
-			public DNSSDQuerier, 
-			public boost::enable_shared_from_this<BonjourQuerier> {
-		public:
-			BonjourQuerier();
-			~BonjourQuerier();
-
-			boost::shared_ptr<DNSSDBrowseQuery> createBrowseQuery();
-			boost::shared_ptr<DNSSDRegisterQuery> createRegisterQuery(
-					const String& name, int port, const ByteArray& info);
-			boost::shared_ptr<DNSSDResolveServiceQuery> createResolveServiceQuery(
-					const DNSSDServiceID&);
-			boost::shared_ptr<DNSSDResolveHostnameQuery> createResolveHostnameQuery(
-					const String& hostname, int interfaceIndex);
-
-			void start();
-			void stop();
-
-		private:
-			friend class BonjourQuery;
-
-			void addRunningQuery(boost::shared_ptr<BonjourQuery>);
-			void removeRunningQuery(boost::shared_ptr<BonjourQuery>);
-			void interruptSelect();
-			void run();
-
-		private:
-			bool stopRequested;
-			boost::thread* thread;
-			boost::mutex runningQueriesMutex;
-			std::list< boost::shared_ptr<BonjourQuery> > runningQueries;
-			int interruptSelectReadSocket;
-			int interruptSelectWriteSocket;
-			boost::condition_variable runningQueriesAvailableEvent;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.cpp b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.cpp
deleted file mode 100644
index c1c481b..0000000
--- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h"
-
-namespace Swift {
-
-BonjourQuery::BonjourQuery(boost::shared_ptr<BonjourQuerier> q) : querier(q), sdRef(0) {
-}
-
-BonjourQuery::~BonjourQuery() {
-	DNSServiceRefDeallocate(sdRef);
-}
-
-void BonjourQuery::processResult() {
-	boost::lock_guard<boost::mutex> lock(sdRefMutex);
-	DNSServiceProcessResult(sdRef);
-}
-
-int BonjourQuery::getSocketID() const {
-	boost::lock_guard<boost::mutex> lock(sdRefMutex);
-	return DNSServiceRefSockFD(sdRef);
-}
-
-void BonjourQuery::run() {
-	querier->addRunningQuery(shared_from_this());
-}
-
-void BonjourQuery::finish() {
-	querier->removeRunningQuery(shared_from_this());
-}
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h
deleted file mode 100644
index bdb91a4..0000000
--- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include <dns_sd.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <boost/thread/mutex.hpp>
-
-#include "Swiften/EventLoop/EventOwner.h"
-
-namespace Swift {
-	class BonjourQuerier;
-
-	class BonjourQuery : 
-			public EventOwner,
-			public boost::enable_shared_from_this<BonjourQuery> {
-		public:
-			BonjourQuery(boost::shared_ptr<BonjourQuerier>);
-			virtual ~BonjourQuery();
-			
-			void processResult();
-			int getSocketID() const;
-
-		protected:
-			void run();
-			void finish();
-		
-		protected:
-			boost::shared_ptr<BonjourQuerier> querier;
-			mutable boost::mutex sdRefMutex;
-			DNSServiceRef sdRef;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourRegisterQuery.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourRegisterQuery.h
deleted file mode 100644
index ddc2788..0000000
--- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourRegisterQuery.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#pragma once
-
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-	class BonjourQuerier;
-
-	class BonjourRegisterQuery : public DNSSDRegisterQuery, public BonjourQuery {
-		public:	
-			BonjourRegisterQuery(const String& name, int port, const ByteArray& txtRecord, boost::shared_ptr<BonjourQuerier> querier) : BonjourQuery(querier) {
-				DNSServiceErrorType result = DNSServiceRegister(
-						&sdRef, 0, 0, name.getUTF8Data(), "_presence._tcp", NULL, NULL, port, 
-						txtRecord.getSize(), txtRecord.getData(), 
-						&BonjourRegisterQuery::handleServiceRegisteredStatic, this);
-				if (result != kDNSServiceErr_NoError) {
-					sdRef = NULL;
-				}
-			}
-
-			void registerService() {
-				if (sdRef) {
-					run();
-				}
-				else {
-					MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this());
-				}
-			}
-
-			void unregisterService() {
-				finish();
-			}
-
-			void updateServiceInfo(const ByteArray& txtRecord) {
-				boost::lock_guard<boost::mutex> lock(sdRefMutex);
-				DNSServiceUpdateRecord(sdRef, NULL, NULL, txtRecord.getSize(), txtRecord.getData(), 0);
-			}
-
-		private:
-			static void handleServiceRegisteredStatic(DNSServiceRef, DNSServiceFlags, DNSServiceErrorType errorCode, const char *name, const char *regtype, const char *domain, void *context) {
-				static_cast<BonjourRegisterQuery*>(context)->handleServiceRegistered(errorCode, name, regtype, domain);
-			}
-
-			void handleServiceRegistered(DNSServiceErrorType errorCode, const char *name, const char *regtype, const char *domain) {
-				if (errorCode != kDNSServiceErr_NoError) {
-					MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this());
-				}
-				else {
-					MainEventLoop::postEvent(boost::bind(boost::ref(onRegisterFinished), boost::optional<DNSSDServiceID>(DNSSDServiceID(name, domain, regtype, 0))), shared_from_this());
-				}
-			}
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveHostnameQuery.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveHostnameQuery.h
deleted file mode 100644
index 7b5f19a..0000000
--- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveHostnameQuery.h
+++ /dev/null
@@ -1,63 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-#include "Swiften/Network/HostAddress.h"
-
-#include <netinet/in.h>
-
-namespace Swift {
-	class BonjourQuerier;
-
-	class BonjourResolveHostnameQuery : public DNSSDResolveHostnameQuery, public BonjourQuery {
-		public: 
-			BonjourResolveHostnameQuery(const String& hostname, int interfaceIndex, boost::shared_ptr<BonjourQuerier> querier) : BonjourQuery(querier) {
-				DNSServiceErrorType result = DNSServiceGetAddrInfo(
-						&sdRef, 0, interfaceIndex, kDNSServiceProtocol_IPv4, 
-						hostname.getUTF8Data(), 
-						&BonjourResolveHostnameQuery::handleHostnameResolvedStatic, this);
-				if (result != kDNSServiceErr_NoError) {
-					sdRef = NULL;
-				}
-			}
-
-			//void DNSSDResolveHostnameQuery::run() {
-			void run() {
-				if (sdRef) {
-					BonjourQuery::run();
-				}
-				else {
-					MainEventLoop::postEvent(boost::bind(boost::ref(onHostnameResolved), boost::optional<HostAddress>()), shared_from_this());
-				}
-			}
-
-			void finish() {
-				BonjourQuery::finish();
-			}
-
-		private:
-			static void handleHostnameResolvedStatic(DNSServiceRef, DNSServiceFlags, uint32_t, DNSServiceErrorType errorCode, const char*, const struct sockaddr *address, uint32_t, void *context) {
-				static_cast<BonjourResolveHostnameQuery*>(context)->handleHostnameResolved(errorCode, address);
-			} 
-
-			void handleHostnameResolved(DNSServiceErrorType errorCode, const struct sockaddr *rawAddress) {
-				if (errorCode) {
-					MainEventLoop::postEvent(
-								boost::bind(boost::ref(onHostnameResolved), 
-								boost::optional<HostAddress>()), 
-							shared_from_this());
-				}
-				else {
-					assert(rawAddress->sa_family == AF_INET);
-					const sockaddr_in* sa = reinterpret_cast<const sockaddr_in*>(rawAddress);
-					uint32_t address = ntohl(sa->sin_addr.s_addr);
-					MainEventLoop::postEvent(boost::bind(
-								boost::ref(onHostnameResolved), 
-								HostAddress(reinterpret_cast<unsigned char*>(&address), 4)), 
-							shared_from_this());
-				}
-			}
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveServiceQuery.h b/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveServiceQuery.h
deleted file mode 100644
index 1c38179..0000000
--- a/Swiften/LinkLocal/DNSSD/Bonjour/BonjourResolveServiceQuery.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#pragma once
-
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h"
-#include "Swiften/LinkLocal/LinkLocalServiceInfo.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-	class BonjourQuerier;
-
-	class BonjourResolveServiceQuery : public DNSSDResolveServiceQuery, public BonjourQuery {
-		public:	
-			BonjourResolveServiceQuery(const DNSSDServiceID& service, boost::shared_ptr<BonjourQuerier> querier) : BonjourQuery(querier) {
-				DNSServiceErrorType result = DNSServiceResolve(
-						&sdRef, 0, service.getNetworkInterfaceID(), 
-						service.getName().getUTF8Data(), service.getType().getUTF8Data(), 
-						service.getDomain().getUTF8Data(), 
-						&BonjourResolveServiceQuery::handleServiceResolvedStatic, this);
-				if (result != kDNSServiceErr_NoError) {
-					sdRef = NULL;
-				}
-			}
-
-			void start() {
-				if (sdRef) {
-					run();
-				}
-				else {
-					MainEventLoop::postEvent(boost::bind(boost::ref(onServiceResolved), boost::optional<Result>()), shared_from_this());
-				}
-			}
-
-			void stop() {
-				finish();
-			}
-
-		private:
-			static void handleServiceResolvedStatic(DNSServiceRef, DNSServiceFlags, uint32_t, DNSServiceErrorType errorCode, const char *fullname, const char *hosttarget, uint16_t port, uint16_t txtLen, const unsigned char *txtRecord, void *context) {
-				static_cast<BonjourResolveServiceQuery*>(context)->handleServiceResolved(errorCode, fullname, hosttarget, port, txtLen, txtRecord);
-			}
-
-			void handleServiceResolved(DNSServiceErrorType errorCode, const char* fullName, const char* host, uint16_t port, uint16_t txtLen, const unsigned char *txtRecord) {
-				if (errorCode != kDNSServiceErr_NoError) {
-					MainEventLoop::postEvent(boost::bind(boost::ref(onServiceResolved), boost::optional<Result>()), shared_from_this());
-				}
-				else {
-					//std::cout << "Service resolved: name:" << fullName << " host:" << host << " port:" << port << std::endl;
-					MainEventLoop::postEvent(
-							boost::bind(
-								boost::ref(onServiceResolved), 
-								Result(String(fullName), String(host), port, 
-									ByteArray(reinterpret_cast<const char*>(txtRecord), txtLen))), 
-							shared_from_this());
-				}
-			}
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.cpp b/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.cpp
deleted file mode 100644
index 1dbff2c..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h"
-
-namespace Swift {
-
-DNSSDBrowseQuery::~DNSSDBrowseQuery() {
-}
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h b/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h
deleted file mode 100644
index 9b30858..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-
-#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h"
-
-namespace Swift {
-	class DNSSDBrowseQuery {
-		public:
-			virtual ~DNSSDBrowseQuery();
-
-			virtual void startBrowsing() = 0;
-			virtual void stopBrowsing() = 0;
-
-			boost::signal<void (const DNSSDServiceID&)> onServiceAdded;
-			boost::signal<void (const DNSSDServiceID&)> onServiceRemoved;
-			boost::signal<void ()> onError;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDQuerier.cpp b/Swiften/LinkLocal/DNSSD/DNSSDQuerier.cpp
deleted file mode 100644
index cc8d6ef..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDQuerier.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h"
-
-namespace Swift {
-
-DNSSDQuerier::~DNSSDQuerier() {
-}
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDQuerier.h b/Swiften/LinkLocal/DNSSD/DNSSDQuerier.h
deleted file mode 100644
index efcc140..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDQuerier.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-namespace Swift {
-	class String;
-	class ByteArray;
-	class DNSSDServiceID;
-	class DNSSDBrowseQuery;
-	class DNSSDRegisterQuery;
-	class DNSSDResolveServiceQuery;
-	class DNSSDResolveHostnameQuery;
-
-	class DNSSDQuerier {
-		public:
-			virtual ~DNSSDQuerier();
-
-			virtual void start() = 0;
-			virtual void stop() = 0;
-
-			virtual boost::shared_ptr<DNSSDBrowseQuery> createBrowseQuery() = 0;
-			virtual boost::shared_ptr<DNSSDRegisterQuery> createRegisterQuery(
-					const String& name, int port, const ByteArray& info) = 0;
-			virtual boost::shared_ptr<DNSSDResolveServiceQuery> createResolveServiceQuery(
-					const DNSSDServiceID&) = 0;
-			virtual boost::shared_ptr<DNSSDResolveHostnameQuery> createResolveHostnameQuery(
-					const String& hostname, int interfaceIndex) = 0;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.cpp b/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.cpp
deleted file mode 100644
index bbb8692..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h"
-
-namespace Swift {
-
-DNSSDRegisterQuery::~DNSSDRegisterQuery() {
-}
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h b/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h
deleted file mode 100644
index 4a04fa9..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-#include <boost/optional.hpp>
-
-#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h"
-
-namespace Swift {
-	class ByteArray;
-
-	class DNSSDRegisterQuery {
-		public:
-			virtual ~DNSSDRegisterQuery();
-
-			virtual void registerService() = 0;
-			virtual void unregisterService() = 0;
-			virtual void updateServiceInfo(const ByteArray& info) = 0;
-
-			boost::signal<void (boost::optional<DNSSDServiceID>)> onRegisterFinished;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.cpp b/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.cpp
deleted file mode 100644
index e247e39..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h"
-
-namespace Swift {
-
-DNSSDResolveHostnameQuery::~DNSSDResolveHostnameQuery() {
-}
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h b/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h
deleted file mode 100644
index 1b9f291..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-#include <boost/optional.hpp>
-
-#include "Swiften/Network/HostAddress.h"
-
-namespace Swift {
-	class DNSSDResolveHostnameQuery {
-		public:
-			virtual ~DNSSDResolveHostnameQuery();
-
-			virtual void run() = 0;
-			virtual void finish() = 0;
-
-			boost::signal<void (const boost::optional<HostAddress>&)> onHostnameResolved;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.cpp b/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.cpp
deleted file mode 100644
index 67a5d66..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h"
-
-namespace Swift {
-
-DNSSDResolveServiceQuery::~DNSSDResolveServiceQuery() {
-}
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h b/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h
deleted file mode 100644
index 217e396..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-#include <boost/optional.hpp>
-
-#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h"
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class DNSSDResolveServiceQuery {
-		public:
-			struct Result {
-				Result(const String& fullName, const String& host, int port, const ByteArray& info) : 
-							fullName(fullName), host(host), port(port), info(info) {}
-				String fullName;
-				String host;
-				int port;
-				ByteArray info;
-			};
-
-			virtual ~DNSSDResolveServiceQuery();
-
-			virtual void start() = 0;
-			virtual void stop() = 0;
-
-			boost::signal<void (const boost::optional<Result>&)> onServiceResolved;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDServiceID.cpp b/Swiften/LinkLocal/DNSSD/DNSSDServiceID.cpp
deleted file mode 100644
index b360ee5..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDServiceID.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h"
-
-namespace Swift {
-
-const char* DNSSDServiceID::PresenceServiceType = "_presence._tcp";
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/DNSSDServiceID.h b/Swiften/LinkLocal/DNSSD/DNSSDServiceID.h
deleted file mode 100644
index ba7828b..0000000
--- a/Swiften/LinkLocal/DNSSD/DNSSDServiceID.h
+++ /dev/null
@@ -1,66 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class DNSSDServiceID {
-		public:
-			static const char* PresenceServiceType;
-
-			DNSSDServiceID(
-				const String& name, 
-				const String& domain, 
-				const String& type = PresenceServiceType, 
-				int networkInterface = 0) : 
-					name(name), 
-					domain(domain), 
-					type(type), 
-					networkInterface(networkInterface) {
-			}
-
-			bool operator==(const DNSSDServiceID& o) const {
-				return name == o.name && domain == o.domain && type == o.type && (networkInterface != 0 && o.networkInterface != 0 ? networkInterface == o.networkInterface : true);
-			}
-
-			bool operator<(const DNSSDServiceID& o) const {
-				if (o.name == name) {
-					if (o.domain == domain) {
-						if (o.type == type) {
-							return networkInterface < o.networkInterface;
-						}
-						else {
-							return type < o.type;
-						}
-					}
-					else {
-						return domain < o.domain;
-					}
-				}
-				else {
-					return o.name < name;
-				}
-			}
-
-			const String& getName() const {
-				return name;
-			}
-
-			const String& getDomain() const {
-				return domain;
-			}
-
-			const String& getType() const {
-				return type;
-			}
-
-			int getNetworkInterfaceID() const {
-				return networkInterface;
-			}
-
-		private:
-			String name;
-			String domain;
-			String type;
-			int networkInterface;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDBrowseQuery.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDBrowseQuery.h
deleted file mode 100644
index 5a0b93b..0000000
--- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDBrowseQuery.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#pragma once
-
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h"
-
-namespace Swift {
-	class FakeDNSSDQuerier;
-
-	class FakeDNSSDBrowseQuery : public DNSSDBrowseQuery, public FakeDNSSDQuery {
-		public:	
-			FakeDNSSDBrowseQuery(boost::shared_ptr<FakeDNSSDQuerier> querier) : FakeDNSSDQuery(querier) {
-			}
-
-			void startBrowsing() {
-				run();
-			}
-
-			void stopBrowsing() {
-				finish();
-			}
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.cpp b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.cpp
deleted file mode 100644
index c26f8ee..0000000
--- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDBrowseQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDRegisterQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveServiceQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveHostnameQuery.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-
-FakeDNSSDQuerier::FakeDNSSDQuerier(const String& domain) : domain(domain) {
-}
-
-FakeDNSSDQuerier::~FakeDNSSDQuerier() {
-	if (!runningQueries.empty()) {
-		std::cerr << "FakeDNSSDQuerier: Running queries not empty at destruction time" << std::endl;
-	}
-}
-
-boost::shared_ptr<DNSSDBrowseQuery> FakeDNSSDQuerier::createBrowseQuery() {
-	return boost::shared_ptr<DNSSDBrowseQuery>(new FakeDNSSDBrowseQuery(shared_from_this()));
-}
-
-boost::shared_ptr<DNSSDRegisterQuery> FakeDNSSDQuerier::createRegisterQuery(const String& name, int port, const ByteArray& info) {
-	return boost::shared_ptr<DNSSDRegisterQuery>(new FakeDNSSDRegisterQuery(name, port, info, shared_from_this()));
-}
-
-boost::shared_ptr<DNSSDResolveServiceQuery> FakeDNSSDQuerier::createResolveServiceQuery(const DNSSDServiceID& service) {
-	return boost::shared_ptr<DNSSDResolveServiceQuery>(new FakeDNSSDResolveServiceQuery(service, shared_from_this()));
-}
-
-boost::shared_ptr<DNSSDResolveHostnameQuery> FakeDNSSDQuerier::createResolveHostnameQuery(const String& hostname, int interfaceIndex) {
-	return boost::shared_ptr<DNSSDResolveHostnameQuery>(new FakeDNSSDResolveHostnameQuery(hostname, interfaceIndex, shared_from_this()));
-}
-
-void FakeDNSSDQuerier::addRunningQuery(boost::shared_ptr<FakeDNSSDQuery> query) {
-	runningQueries.push_back(query);
-	if (boost::shared_ptr<FakeDNSSDBrowseQuery> browseQuery = boost::dynamic_pointer_cast<FakeDNSSDBrowseQuery>(query)) {
-		foreach(const DNSSDServiceID& service, services) {
-			MainEventLoop::postEvent(boost::bind(boost::ref(browseQuery->onServiceAdded), service), shared_from_this());
-		}
-	}
-	else if (boost::shared_ptr<FakeDNSSDResolveServiceQuery> resolveQuery = boost::dynamic_pointer_cast<FakeDNSSDResolveServiceQuery>(query)) {
-		for(ServiceInfoMap::const_iterator i = serviceInfo.begin(); i != serviceInfo.end(); ++i) {
-			if (i->first == resolveQuery->service) {
-				MainEventLoop::postEvent(boost::bind(boost::ref(resolveQuery->onServiceResolved), i->second), shared_from_this());
-			}
-		}
-	}
-	else if (boost::shared_ptr<FakeDNSSDRegisterQuery> registerQuery = boost::dynamic_pointer_cast<FakeDNSSDRegisterQuery>(query)) {
-		DNSSDServiceID service(registerQuery->name, domain);
-		MainEventLoop::postEvent(boost::bind(boost::ref(registerQuery->onRegisterFinished), service), shared_from_this());
-	}
-	else if (boost::shared_ptr<FakeDNSSDResolveHostnameQuery> resolveHostnameQuery = boost::dynamic_pointer_cast<FakeDNSSDResolveHostnameQuery>(query)) {
-		std::map<String,boost::optional<HostAddress> >::const_iterator i = addresses.find(resolveHostnameQuery->hostname);
-		if (i != addresses.end()) {
-			MainEventLoop::postEvent(
-					boost::bind(
-						boost::ref(resolveHostnameQuery->onHostnameResolved), i->second), 
-					shared_from_this());
-		}
-	}
-}
-
-void FakeDNSSDQuerier::removeRunningQuery(boost::shared_ptr<FakeDNSSDQuery> query) {
-	runningQueries.erase(std::remove(
-		runningQueries.begin(), runningQueries.end(), query), runningQueries.end());
-}
-
-void FakeDNSSDQuerier::addService(const DNSSDServiceID& id) {
-	services.insert(id);
-	foreach(const boost::shared_ptr<FakeDNSSDBrowseQuery>& query, getQueries<FakeDNSSDBrowseQuery>()) {
-		MainEventLoop::postEvent(boost::bind(boost::ref(query->onServiceAdded), id), shared_from_this());
-	}
-}
-
-void FakeDNSSDQuerier::removeService(const DNSSDServiceID& id) {
-	services.erase(id);
-	serviceInfo.erase(id);
-	foreach(const boost::shared_ptr<FakeDNSSDBrowseQuery>& query, getQueries<FakeDNSSDBrowseQuery>()) {
-		MainEventLoop::postEvent(boost::bind(boost::ref(query->onServiceRemoved), id), shared_from_this());
-	}
-}
-
-void FakeDNSSDQuerier::setServiceInfo(const DNSSDServiceID& id, const DNSSDResolveServiceQuery::Result& info) {
-	std::pair<ServiceInfoMap::iterator, bool> r = serviceInfo.insert(std::make_pair(id, info));
-	if (!r.second) {
-		r.first->second = info;
-	}
-	foreach(const boost::shared_ptr<FakeDNSSDResolveServiceQuery>& query, getQueries<FakeDNSSDResolveServiceQuery>()) {
-		if (query->service == id) {
-			MainEventLoop::postEvent(boost::bind(boost::ref(query->onServiceResolved), info), shared_from_this());
-		}
-	}
-}
-
-bool FakeDNSSDQuerier::isServiceRegistered(const String& name, int port, const ByteArray& info) {
-	foreach(const boost::shared_ptr<FakeDNSSDRegisterQuery>& query, getQueries<FakeDNSSDRegisterQuery>()) {
-		if (query->name == name && query->port == port && query->info == info) {
-			return true;
-		}
-	}
-	return false;
-}
-
-void FakeDNSSDQuerier::setBrowseError() {
-	foreach(const boost::shared_ptr<FakeDNSSDBrowseQuery>& query, getQueries<FakeDNSSDBrowseQuery>()) {
-		MainEventLoop::postEvent(boost::ref(query->onError), shared_from_this());
-	}
-}
-
-void FakeDNSSDQuerier::setRegisterError() {
-	foreach(const boost::shared_ptr<FakeDNSSDRegisterQuery>& query, getQueries<FakeDNSSDRegisterQuery>()) {
-		MainEventLoop::postEvent(boost::bind(boost::ref(query->onRegisterFinished), boost::optional<DNSSDServiceID>()), shared_from_this());
-	}
-}
-
-void FakeDNSSDQuerier::setAddress(const String& hostname, boost::optional<HostAddress> address) {
-	addresses[hostname] = address;
-	foreach(const boost::shared_ptr<FakeDNSSDResolveHostnameQuery>& query, getQueries<FakeDNSSDResolveHostnameQuery>()) {
-		if (query->hostname == hostname) {
-			MainEventLoop::postEvent(boost::bind(
-					boost::ref(query->onHostnameResolved), address), shared_from_this());
-		}
-	}
-}
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h
deleted file mode 100644
index 22bca0c..0000000
--- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h
+++ /dev/null
@@ -1,71 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <list>
-#include <set>
-
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/EventLoop/EventOwner.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h"
-#include "Swiften/Network/HostAddress.h"
-
-namespace Swift {
-	class ByteArray;
-	class FakeDNSSDQuery;
-	class FakeDNSSDBrowseQuery;
-
-	class FakeDNSSDQuerier : 
-			public DNSSDQuerier, 
-			public EventOwner,
-			public boost::enable_shared_from_this<FakeDNSSDQuerier> {
-		public:
-			FakeDNSSDQuerier(const String& domain);
-			~FakeDNSSDQuerier();
-
-			void start() {}
-			void stop() {}
-
-			boost::shared_ptr<DNSSDBrowseQuery> createBrowseQuery();
-			boost::shared_ptr<DNSSDRegisterQuery> createRegisterQuery(
-					const String& name, int port, const ByteArray& info);
-			boost::shared_ptr<DNSSDResolveServiceQuery> createResolveServiceQuery(
-					const DNSSDServiceID&);
-			boost::shared_ptr<DNSSDResolveHostnameQuery> createResolveHostnameQuery(
-					const String& hostname, int interfaceIndex);
-
-			void addRunningQuery(boost::shared_ptr<FakeDNSSDQuery>);
-			void removeRunningQuery(boost::shared_ptr<FakeDNSSDQuery>);
-
-			void addService(const DNSSDServiceID& id);
-			void removeService(const DNSSDServiceID& id);
-			void setServiceInfo(const DNSSDServiceID& id, const DNSSDResolveServiceQuery::Result& info);
-			bool isServiceRegistered(const String& name, int port, const ByteArray& info);
-			void setAddress(const String& hostname, boost::optional<HostAddress> address);
-
-			void setBrowseError();
-			void setRegisterError();
-
-		private:
-			template<typename T>
-			std::vector< boost::shared_ptr<T> > getQueries() const {
-				std::vector< boost::shared_ptr<T> > result;
-				foreach(const boost::shared_ptr<FakeDNSSDQuery>& query, runningQueries) {
-					if (boost::shared_ptr<T> resultQuery = boost::dynamic_pointer_cast<T>(query)) {
-						result.push_back(resultQuery);
-					}
-				}
-				return result;
-			}
-
-		private:
-			String domain;
-			std::list< boost::shared_ptr<FakeDNSSDQuery> > runningQueries;
-			std::set<DNSSDServiceID> services;
-			typedef std::map<DNSSDServiceID,DNSSDResolveServiceQuery::Result> ServiceInfoMap;
-			ServiceInfoMap serviceInfo;
-			std::map<String, boost::optional<HostAddress> > addresses;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.cpp b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.cpp
deleted file mode 100644
index ced7850..0000000
--- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h"
-
-namespace Swift {
-
-FakeDNSSDQuery::FakeDNSSDQuery(boost::shared_ptr<FakeDNSSDQuerier> querier) : querier(querier) {
-}
-
-FakeDNSSDQuery::~FakeDNSSDQuery() {
-}
-
-void FakeDNSSDQuery::run() {
-	querier->addRunningQuery(shared_from_this());
-}
-
-void FakeDNSSDQuery::finish() {
-	querier->removeRunningQuery(shared_from_this());
-}
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h
deleted file mode 100644
index 9fca1d4..0000000
--- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "Swiften/EventLoop/EventOwner.h"
-
-namespace Swift {
-	class FakeDNSSDQuerier;
-
-	class FakeDNSSDQuery : 
-			public EventOwner,
-			public boost::enable_shared_from_this<FakeDNSSDQuery> {
-		public:
-			FakeDNSSDQuery(boost::shared_ptr<FakeDNSSDQuerier>);
-			virtual ~FakeDNSSDQuery();
-			
-		protected:
-			void run();
-			void finish();
-		
-		protected:
-			boost::shared_ptr<FakeDNSSDQuerier> querier;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDRegisterQuery.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDRegisterQuery.h
deleted file mode 100644
index 82ec623..0000000
--- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDRegisterQuery.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class FakeDNSSDQuerier;
-
-	class FakeDNSSDRegisterQuery : public DNSSDRegisterQuery, public FakeDNSSDQuery {
-		public:	
-			FakeDNSSDRegisterQuery(const String& name, int port, const ByteArray& info, boost::shared_ptr<FakeDNSSDQuerier> querier) : FakeDNSSDQuery(querier), name(name), port(port), info(info) {
-			}
-
-			void registerService() {
-				run();
-			}
-
-			void updateServiceInfo(const ByteArray& i) {
-				info = i;
-			}
-
-			void unregisterService() {
-				finish();
-			}
-
-			String name;
-			int port;
-			ByteArray info;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveHostnameQuery.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveHostnameQuery.h
deleted file mode 100644
index 5ed42af..0000000
--- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveHostnameQuery.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h"
-#include "Swiften/Network/HostAddress.h"
-
-namespace Swift {
-	class FakeDNSSDQuerier;
-
-	class FakeDNSSDResolveHostnameQuery : public DNSSDResolveHostnameQuery, public FakeDNSSDQuery {
-		public:	
-			FakeDNSSDResolveHostnameQuery(const String& hostname, int interfaceIndex, boost::shared_ptr<FakeDNSSDQuerier> querier) : FakeDNSSDQuery(querier), hostname(hostname), interfaceIndex(interfaceIndex) {
-			}
-
-			void run() {
-				FakeDNSSDQuery::run();
-			}
-
-			void finish() {
-				FakeDNSSDQuery::finish();
-			}
-
-			String hostname;
-			int interfaceIndex;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveServiceQuery.h b/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveServiceQuery.h
deleted file mode 100644
index 60d35e5..0000000
--- a/Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDResolveServiceQuery.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h"
-#include "Swiften/LinkLocal/LinkLocalServiceInfo.h"
-
-namespace Swift {
-	class FakeDNSSDQuerier;
-
-	class FakeDNSSDResolveServiceQuery : public DNSSDResolveServiceQuery, public FakeDNSSDQuery {
-		public:	
-			FakeDNSSDResolveServiceQuery(const DNSSDServiceID& service, boost::shared_ptr<FakeDNSSDQuerier> querier) : FakeDNSSDQuery(querier), service(service) {
-			}
-
-			void start() {
-				run();
-			}
-
-			void stop() {
-				finish();
-			}
-
-			DNSSDServiceID service;
-	};
-}
diff --git a/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.cpp b/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.cpp
deleted file mode 100644
index 7b06350..0000000
--- a/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.h"
-
-#if defined(HAVE_BONJOUR)
-#include "Swiften/LinkLocal/DNSSD/Bonjour/BonjourQuerier.h"
-#elif defined(HAVE_AVAHI)
-#include "Swiften/LinkLocal/DNSSD/Avahi/AvahiQuerier.h"
-#endif
-
-
-namespace Swift {
-
-boost::shared_ptr<DNSSDQuerier> PlatformDNSSDQuerierFactory::createQuerier() {
-#if defined(HAVE_BONJOUR)
-	return boost::shared_ptr<DNSSDQuerier>(new BonjourQuerier());
-#elif defined(HAVE_AVAHI)
-	return boost::shared_ptr<DNSSDQuerier>(new AvahiQuerier());
-#else
-	return boost::shared_ptr<DNSSDQuerier>();
-#endif
-}
-
-}
diff --git a/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.h b/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.h
deleted file mode 100644
index b52814b..0000000
--- a/Swiften/LinkLocal/DNSSD/PlatformDNSSDQuerierFactory.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-namespace Swift {
-	class DNSSDQuerier;
-
-	class PlatformDNSSDQuerierFactory {
-		public:
-			 boost::shared_ptr<DNSSDQuerier> createQuerier();
-	};
-}
diff --git a/Swiften/LinkLocal/IncomingLinkLocalSession.cpp b/Swiften/LinkLocal/IncomingLinkLocalSession.cpp
deleted file mode 100644
index 77910e6..0000000
--- a/Swiften/LinkLocal/IncomingLinkLocalSession.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-#include "Swiften/LinkLocal/IncomingLinkLocalSession.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/Elements/ProtocolHeader.h"
-#include "Swiften/Network/Connection.h"
-#include "Swiften/StreamStack/StreamStack.h"
-#include "Swiften/StreamStack/ConnectionLayer.h"
-#include "Swiften/StreamStack/XMPPLayer.h"
-#include "Swiften/Elements/StreamFeatures.h"
-#include "Swiften/Elements/IQ.h"
-
-namespace Swift {
-
-IncomingLinkLocalSession::IncomingLinkLocalSession(
-		const JID& localJID,
-		boost::shared_ptr<Connection> connection, 
-		PayloadParserFactoryCollection* payloadParserFactories, 
-		PayloadSerializerCollection* payloadSerializers) :
-			Session(connection, payloadParserFactories, payloadSerializers),
-			initialized(false) {
-	setLocalJID(localJID);
-}
-
-void IncomingLinkLocalSession::handleStreamStart(const ProtocolHeader& incomingHeader) {
-	setRemoteJID(JID(incomingHeader.getFrom()));
-	if (!getRemoteJID().isValid()) {
-		finishSession();
-		return;
-	}
-
-	ProtocolHeader header;
-	header.setFrom(getLocalJID());
-	getXMPPLayer()->writeHeader(header);
-
-	if (incomingHeader.getVersion() == "1.0") {
-		getXMPPLayer()->writeElement(boost::shared_ptr<StreamFeatures>(new StreamFeatures()));
-	}
-	else {
-		setInitialized();
-	}
-}
-
-void IncomingLinkLocalSession::handleElement(boost::shared_ptr<Element> element) {
-	boost::shared_ptr<Stanza> stanza = boost::dynamic_pointer_cast<Stanza>(element);
-	// If we get our first stanza before streamfeatures, our session is implicitly
-	// initialized
-	if (stanza && !isInitialized()) {
-		setInitialized();
-	}
-	
-	onElementReceived(element);
-}
-
-void IncomingLinkLocalSession::setInitialized() {
-	initialized = true;
-	onSessionStarted();
-}
-
-
-
-}
diff --git a/Swiften/LinkLocal/IncomingLinkLocalSession.h b/Swiften/LinkLocal/IncomingLinkLocalSession.h
deleted file mode 100644
index e3f0460..0000000
--- a/Swiften/LinkLocal/IncomingLinkLocalSession.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/signal.hpp>
-
-#include "Swiften/Session/Session.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/Network/Connection.h"
-
-namespace Swift {
-	class ProtocolHeader;
-	class String;
-	class Element;
-	class PayloadParserFactoryCollection;
-	class PayloadSerializerCollection;
-
-	class IncomingLinkLocalSession : public Session {
-		public:
-			IncomingLinkLocalSession(
-					const JID& localJID,
-					boost::shared_ptr<Connection> connection, 
-					PayloadParserFactoryCollection* payloadParserFactories, 
-					PayloadSerializerCollection* payloadSerializers);
-
-			boost::signal<void ()> onSessionStarted;
-
-		private:
-			void handleElement(boost::shared_ptr<Element>);
-			void handleStreamStart(const ProtocolHeader&);
-			void setInitialized();
-			bool isInitialized() const { 
-				return initialized; 
-			}
-
-			bool initialized;
-	};
-}
diff --git a/Swiften/LinkLocal/LinkLocalConnector.cpp b/Swiften/LinkLocal/LinkLocalConnector.cpp
deleted file mode 100644
index fba4a4e..0000000
--- a/Swiften/LinkLocal/LinkLocalConnector.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#include "Swiften/LinkLocal/LinkLocalConnector.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/Network/Connection.h"
-#include "Swiften/Network/ConnectionFactory.h"
-#include "Swiften/Network/HostAddress.h"
-#include "Swiften/Network/HostAddressPort.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h"
-
-namespace Swift {
-
-LinkLocalConnector::LinkLocalConnector(
-		const LinkLocalService& service,
-		boost::shared_ptr<DNSSDQuerier> querier,
-		boost::shared_ptr<Connection> connection) : 
-			service(service),
-			querier(querier),
-			connection(connection) {
-}
-
-LinkLocalConnector::~LinkLocalConnector() {
-	assert(!resolveQuery);
-}
-
-void LinkLocalConnector::connect() {
-	resolveQuery = querier->createResolveHostnameQuery(
-			service.getHostname(), 
-			service.getID().getNetworkInterfaceID());
-	resolveQuery->onHostnameResolved.connect(boost::bind(
-			&LinkLocalConnector::handleHostnameResolved, 
-			boost::dynamic_pointer_cast<LinkLocalConnector>(shared_from_this()), 
-			_1));
-	resolveQuery->run();
-}
-
-void LinkLocalConnector::cancel() {
-	if (resolveQuery) {
-		resolveQuery->finish();
-	}
-	resolveQuery.reset();
-	connection->disconnect();
-}
-
-void LinkLocalConnector::handleHostnameResolved(const boost::optional<HostAddress>& address) {
-	resolveQuery->finish();
-	resolveQuery.reset();
-	if (address) {
-		connection->onConnectFinished.connect(
-				boost::bind(boost::ref(onConnectFinished), _1));
-		connection->connect(HostAddressPort(*address, service.getPort()));
-	}
-	else {
-		onConnectFinished(true);
-	}
-}
-
-void LinkLocalConnector::handleConnected(bool error) {
-	onConnectFinished(error);
-}
-
-void LinkLocalConnector::queueElement(boost::shared_ptr<Element> element) {
-	queuedElements.push_back(element);
-}
-
-
-}
diff --git a/Swiften/LinkLocal/LinkLocalConnector.h b/Swiften/LinkLocal/LinkLocalConnector.h
deleted file mode 100644
index 0b6baef..0000000
--- a/Swiften/LinkLocal/LinkLocalConnector.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/signal.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <vector>
-
-#include "Swiften/Network/Connection.h"
-#include "Swiften/LinkLocal/LinkLocalService.h"
-
-namespace Swift {
-	class ConnectionFactory;
-	class HostAddress;
-	class Element;
-	class PayloadParserFactoryCollection;
-	class PayloadSerializerCollection;
-	class DNSSDQuerier;
-	class DNSSDResolveHostnameQuery;
-
-	class LinkLocalConnector : public boost::enable_shared_from_this<LinkLocalConnector> {
-		public:
-			LinkLocalConnector(
-					const LinkLocalService& service, 
-					boost::shared_ptr<DNSSDQuerier> querier,
-					boost::shared_ptr<Connection> connection);
-			~LinkLocalConnector();
-
-			const LinkLocalService& getService() const {
-				return service;
-			}
-
-			void connect();
-			void cancel();
-			void queueElement(boost::shared_ptr<Element> element);
-
-			const std::vector<boost::shared_ptr<Element> >& getQueuedElements() const {
-				return queuedElements;
-			}
-
-			boost::shared_ptr<Connection> getConnection() const {
-				return connection;
-			}
-
-			boost::signal<void (bool)> onConnectFinished;
-
-		private:
-			void handleHostnameResolved(const boost::optional<HostAddress>& address);
-			void handleConnected(bool error);
-
-		private:
-			LinkLocalService service;
-			boost::shared_ptr<DNSSDQuerier> querier;
-			boost::shared_ptr<DNSSDResolveHostnameQuery> resolveQuery;
-			boost::shared_ptr<Connection> connection;
-			std::vector<boost::shared_ptr<Element> > queuedElements;
-	};
-}
diff --git a/Swiften/LinkLocal/LinkLocalService.cpp b/Swiften/LinkLocal/LinkLocalService.cpp
deleted file mode 100644
index f1114ed..0000000
--- a/Swiften/LinkLocal/LinkLocalService.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "Swiften/LinkLocal/LinkLocalService.h"
-
-namespace Swift {
-
-String LinkLocalService::getDescription() const {
-	LinkLocalServiceInfo info = getInfo();
-	if (!info.getNick().isEmpty()) {
-		return info.getNick();
-	}
-	else if (!info.getFirstName().isEmpty()) {
-		String result = info.getFirstName();
-		if (!info.getLastName().isEmpty()) {
-			result += " " + info.getLastName();
-		}
-		return result;
-	}
-	else if (!info.getLastName().isEmpty()) {
-		return info.getLastName();
-	}
-	return getName();
-}
-
-JID LinkLocalService::getJID() const {
-	return JID(getName());
-}
-
-}
diff --git a/Swiften/LinkLocal/LinkLocalService.h b/Swiften/LinkLocal/LinkLocalService.h
deleted file mode 100644
index 8ae593c..0000000
--- a/Swiften/LinkLocal/LinkLocalService.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h"
-#include "Swiften/LinkLocal/LinkLocalServiceInfo.h"
-
-namespace Swift {
-	class LinkLocalService {
-		public:
-			LinkLocalService(
-					const DNSSDServiceID& id,
-					const DNSSDResolveServiceQuery::Result& info) :
-						id(id),
-						info(info) {}
-
-			const DNSSDServiceID& getID() const {
-				return id;
-			}
-
-			const String& getName() const {
-				return id.getName();
-			}
-
-			int getPort() const {
-				return info.port;
-			}
-
-			const String& getHostname() const {
-				return info.host;
-			}
-
-			LinkLocalServiceInfo getInfo() const {
-				return LinkLocalServiceInfo::createFromTXTRecord(info.info);
-			}
-
-			String getDescription() const;
-
-			JID getJID() const;
-
-		private:
-			DNSSDServiceID id;
-			DNSSDResolveServiceQuery::Result info;
-	};
-}
diff --git a/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp b/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp
deleted file mode 100644
index 061bf2c..0000000
--- a/Swiften/LinkLocal/LinkLocalServiceBrowser.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-#include <boost/bind.hpp>
-#include <iostream>
-
-#include "Swiften/LinkLocal/LinkLocalServiceBrowser.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDBrowseQuery.h"
-#include "Swiften/Network/HostAddress.h"
-
-namespace Swift {
-
-LinkLocalServiceBrowser::LinkLocalServiceBrowser(boost::shared_ptr<DNSSDQuerier> querier) : querier(querier), haveError(false) {
-}
-
-LinkLocalServiceBrowser::~LinkLocalServiceBrowser() {
-	if (isRunning()) {
-		std::cerr << "WARNING: LinkLocalServiceBrowser still running on destruction" << std::endl;
-	}
-}
-
-
-void LinkLocalServiceBrowser::start() {
-	assert(!isRunning());
-	haveError = false;
-	browseQuery = querier->createBrowseQuery();
-	browseQuery->onServiceAdded.connect(
-			boost::bind(&LinkLocalServiceBrowser::handleServiceAdded, this, _1));
-	browseQuery->onServiceRemoved.connect(
-			boost::bind(&LinkLocalServiceBrowser::handleServiceRemoved, this, _1));
-	browseQuery->onError.connect(
-			boost::bind(&LinkLocalServiceBrowser::handleBrowseError, this));
-	browseQuery->startBrowsing();
-}
-
-void LinkLocalServiceBrowser::stop() {
-	assert(isRunning());
-	if (isRegistered()) {
-		unregisterService();
-	}
-	for (ResolveQueryMap::const_iterator i = resolveQueries.begin(); i != resolveQueries.end(); ++i) {
-		i->second->stop();
-	}
-	resolveQueries.clear();
-	services.clear();
-	browseQuery->stopBrowsing();
-	browseQuery.reset();
-	onStopped(haveError);
-}
-
-bool LinkLocalServiceBrowser::isRunning() const {
-	return browseQuery;
-}
-
-bool LinkLocalServiceBrowser::hasError() const {
-	return haveError;
-}
-
-bool LinkLocalServiceBrowser::isRegistered() const {
-	return registerQuery;
-}
-
-void LinkLocalServiceBrowser::registerService(const String& name, int port, const LinkLocalServiceInfo& info) {
-	assert(!registerQuery);
-	registerQuery = querier->createRegisterQuery(name, port, info.toTXTRecord());
-	registerQuery->onRegisterFinished.connect(
-		boost::bind(&LinkLocalServiceBrowser::handleRegisterFinished, this, _1));
-	registerQuery->registerService();
-}
-
-void LinkLocalServiceBrowser::updateService(const LinkLocalServiceInfo& info) {
-	assert(registerQuery);
-	registerQuery->updateServiceInfo(info.toTXTRecord());
-}
-
-void LinkLocalServiceBrowser::unregisterService() {
-	assert(registerQuery);
-	registerQuery->unregisterService();
-	registerQuery.reset();
-	selfService.reset();
-}
-
-std::vector<LinkLocalService> LinkLocalServiceBrowser::getServices() const {
-	std::vector<LinkLocalService> result;
-	for (ServiceMap::const_iterator i = services.begin(); i != services.end(); ++i) {
-		result.push_back(LinkLocalService(i->first, i->second));
-	}
-	return result;
-}
-
-void LinkLocalServiceBrowser::handleServiceAdded(const DNSSDServiceID& service) {
-	if (selfService && service == *selfService) {
-		return;
-	}
-	boost::shared_ptr<DNSSDResolveServiceQuery> resolveQuery = querier->createResolveServiceQuery(service);
-	resolveQuery->onServiceResolved.connect(
-		boost::bind(&LinkLocalServiceBrowser::handleServiceResolved, this, service, _1));
-	std::pair<ResolveQueryMap::iterator, bool> r = resolveQueries.insert(std::make_pair(service, resolveQuery));
-	if (!r.second) {
-		r.first->second = resolveQuery;
-	}
-	resolveQuery->start();
-}
-
-void LinkLocalServiceBrowser::handleServiceRemoved(const DNSSDServiceID& service) {
-	ResolveQueryMap::iterator i = resolveQueries.find(service);
-	if (i == resolveQueries.end()) {
-		// Can happen after an unregister(), when getting the old 'self' 
-		// service remove notification.
-		return;
-	}
-	i->second->stop();
-	resolveQueries.erase(i);
-	ServiceMap::iterator j = services.find(service);
-	assert(j != services.end());
-	LinkLocalService linkLocalService(j->first, j->second);
-	services.erase(j);
-	onServiceRemoved(linkLocalService);
-}
-
-void LinkLocalServiceBrowser::handleServiceResolved(const DNSSDServiceID& service, const boost::optional<DNSSDResolveServiceQuery::Result>& result) {
-	if (result) {
-		std::pair<ServiceMap::iterator, bool> r = services.insert(std::make_pair(service, *result));
-		if (r.second) {
-			onServiceAdded(LinkLocalService(r.first->first, r.first->second));
-		}
-		else {
-			r.first->second = *result;
-			onServiceChanged(LinkLocalService(r.first->first, r.first->second));
-		}
-	}
-}
-
-void LinkLocalServiceBrowser::handleRegisterFinished(const boost::optional<DNSSDServiceID>& result) {
-	if (result) {
-		selfService = result;
-		onServiceRegistered(*result);
-	}
-	else {
-		haveError = true;
-		stop();
-	}
-}
-
-void LinkLocalServiceBrowser::handleBrowseError() {
-	haveError = true;
-	stop();
-}
-
-}
diff --git a/Swiften/LinkLocal/LinkLocalServiceBrowser.h b/Swiften/LinkLocal/LinkLocalServiceBrowser.h
deleted file mode 100644
index 66973d5..0000000
--- a/Swiften/LinkLocal/LinkLocalServiceBrowser.h
+++ /dev/null
@@ -1,68 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/optional.hpp>
-#include <map>
-#include <vector>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDQuerier.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDRegisterQuery.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h"
-#include "Swiften/LinkLocal/LinkLocalService.h"
-#include "Swiften/LinkLocal/LinkLocalServiceInfo.h"
-
-namespace Swift {
-	class LinkLocalServiceBrowser {
-		public:
-			LinkLocalServiceBrowser(boost::shared_ptr<DNSSDQuerier> querier);
-			~LinkLocalServiceBrowser();
-
-			void start();
-			void stop();
-			bool isRunning() const;
-			bool hasError() const;
-
-			void registerService(
-					const String& name, 
-					int port, 
-					const LinkLocalServiceInfo& info = LinkLocalServiceInfo());
-			void updateService(
-					const LinkLocalServiceInfo& info = LinkLocalServiceInfo());
-			void unregisterService();
-			bool isRegistered() const;
-
-			std::vector<LinkLocalService> getServices() const;
-
-			// FIXME: Ugly that we need this
-			boost::shared_ptr<DNSSDQuerier> getQuerier() const {
-				return querier;
-			}
-
-			boost::signal<void (const LinkLocalService&)> onServiceAdded;
-			boost::signal<void (const LinkLocalService&)> onServiceChanged;
-			boost::signal<void (const LinkLocalService&)> onServiceRemoved;
-			boost::signal<void (const DNSSDServiceID&)> onServiceRegistered;
-			boost::signal<void (bool)> onStopped;
-
-		private:
-			void handleServiceAdded(const DNSSDServiceID&);
-			void handleServiceRemoved(const DNSSDServiceID&);
-			void handleServiceResolved(const DNSSDServiceID& service, const boost::optional<DNSSDResolveServiceQuery::Result>& result);
-			void handleRegisterFinished(const boost::optional<DNSSDServiceID>&);
-			void handleBrowseError();
-
-		private:
-			boost::shared_ptr<DNSSDQuerier> querier;
-			boost::optional<DNSSDServiceID> selfService;
-			boost::shared_ptr<DNSSDBrowseQuery> browseQuery;
-			boost::shared_ptr<DNSSDRegisterQuery> registerQuery;
-			typedef std::map<DNSSDServiceID, boost::shared_ptr<DNSSDResolveServiceQuery> > ResolveQueryMap;
-			ResolveQueryMap resolveQueries;
-			typedef std::map<DNSSDServiceID, DNSSDResolveServiceQuery::Result> ServiceMap;
-			ServiceMap services;
-			bool haveError;
-	};
-}
diff --git a/Swiften/LinkLocal/LinkLocalServiceInfo.cpp b/Swiften/LinkLocal/LinkLocalServiceInfo.cpp
deleted file mode 100644
index 8ee7ae0..0000000
--- a/Swiften/LinkLocal/LinkLocalServiceInfo.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-#include "Swiften/LinkLocal/LinkLocalServiceInfo.h"
-
-#include <boost/lexical_cast.hpp>
-
-namespace Swift {
-
-ByteArray LinkLocalServiceInfo::toTXTRecord() const {
-	ByteArray result(getEncoded("txtvers=1"));
-	if (!firstName.isEmpty()) {
-		result += getEncoded("1st=" + firstName);
-	}
-	if (!lastName.isEmpty()) {
-		result += getEncoded("last=" + lastName);
-	}
-	if (!email.isEmpty()) {
-		result += getEncoded("email=" + email);
-	}
-	if (jid.isValid()) {
-		result += getEncoded("jid=" + jid.toString());
-	}
-	if (!message.isEmpty()) {
-		result += getEncoded("msg=" + message);
-	}
-	if (!nick.isEmpty()) {
-		result += getEncoded("nick=" + nick);
-	}
-	if (port) {
-		result += getEncoded("port.p2pj=" + String(boost::lexical_cast<std::string>(*port)));
-	}
-
-	switch (status) {
-		case Available: result += getEncoded("status=avail"); break;
-		case Away: result += getEncoded("status=away"); break;
-		case DND: result += getEncoded("status=dnd"); break;
-	}
-
-	return result;
-}
-
-ByteArray LinkLocalServiceInfo::getEncoded(const String& s) {
-	ByteArray sizeByte;
-	sizeByte.resize(1);
-	assert(s.getLength() < 256);
-	sizeByte[0] = s.getUTF8Size();
-	return sizeByte + ByteArray(s);
-}
-
-LinkLocalServiceInfo LinkLocalServiceInfo::createFromTXTRecord(const ByteArray& record) {
-	LinkLocalServiceInfo info;
-	size_t i = 0;
-	while (i < record.getSize()) {
-		std::pair<String,String> entry = readEntry(record, &i);
-		if (entry.first.isEmpty()) {
-			break;
-		}
-		else if (entry.first == "1st") {
-			info.setFirstName(entry.second);
-		}
-		else if (entry.first == "last") {
-			info.setLastName(entry.second);
-		}
-		else if (entry.first == "email") {
-			info.setEMail(entry.second);
-		}
-		else if (entry.first == "jid") {
-			info.setJID(JID(entry.second));
-		}
-		else if (entry.first == "msg") {
-			info.setMessage(entry.second);
-		}
-		else if (entry.first == "nick") {
-			info.setNick(entry.second);
-		}
-		else if (entry.first == "port.p2pj") {
-			info.setPort(boost::lexical_cast<int>(entry.second));
-		}
-		else if (entry.first == "status") {
-			if (entry.second == "away") {
-				info.setStatus(Away);
-			}
-			else if (entry.second == "dnd") {
-				info.setStatus(DND);
-			}
-		}
-	}
-	return info;
-}
-
-std::pair<String,String> LinkLocalServiceInfo::readEntry(const ByteArray& record, size_t* index) {
-	size_t& i = *index;
-	String key;
-	String value;
-
-	size_t entryEnd = i + 1 + record[i];
-	++i;
-	bool inKey = true;
-	while (i < entryEnd && i < record.getSize()) {
-		if (inKey) {
-			if (record[i] == '=') {
-				inKey = false;
-			}
-			else {
-				key += record[i];
-			}
-		}
-		else {
-			value += record[i];
-		}
-		++i;
-	}
-	return std::make_pair(key, value);
-}
-
-}
diff --git a/Swiften/LinkLocal/LinkLocalServiceInfo.h b/Swiften/LinkLocal/LinkLocalServiceInfo.h
deleted file mode 100644
index d78b70c..0000000
--- a/Swiften/LinkLocal/LinkLocalServiceInfo.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#pragma once
-
-#include <boost/optional.hpp>
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/JID/JID.h"
-
-namespace Swift {
-
-	class LinkLocalServiceInfo {
-		public:
-			enum Status { Available, Away, DND };
-
-			LinkLocalServiceInfo() : status(Available) {}
-
-			const String& getFirstName() const { return firstName; }
-			void setFirstName(const String& f) { firstName = f; }
-
-			const String& getLastName() const { return lastName; }
-			void setLastName(const String& l) { lastName = l; }
-
-			const String& getEMail() const { return email; }
-			void setEMail(const String& e) { email = e; }
-
-			const JID& getJID() const { return jid; }
-			void setJID(const JID& j) { jid = j; }
-
-			const String& getMessage() const { return message; }
-			void setMessage(const String& m) { message = m; }
-
-			const String& getNick() const { return nick; }
-			void setNick(const String& n) { nick = n; }
-
-			Status getStatus() const { return status; }
-			void setStatus(Status s) { status = s; }
-
-			boost::optional<int> getPort() const { return port; }
-			void setPort(int p) { port = p; }
-
-			ByteArray toTXTRecord() const;
-
-			static LinkLocalServiceInfo createFromTXTRecord(const ByteArray& record);
-
-		private:
-			static ByteArray getEncoded(const String&);
-			static std::pair<String,String> readEntry(const ByteArray&, size_t*);
-
-		private:
-			String firstName;
-			String lastName;
-			String email;
-			JID jid;
-			String message;
-			String nick;
-			Status status;
-			boost::optional<int> port;
-	};
-}
diff --git a/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp b/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp
deleted file mode 100644
index 7b71f82..0000000
--- a/Swiften/LinkLocal/OutgoingLinkLocalSession.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "Swiften/LinkLocal/OutgoingLinkLocalSession.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/StreamStack/XMPPLayer.h"
-#include "Swiften/Elements/ProtocolHeader.h"
-#include "Swiften/Elements/StreamFeatures.h"
-#include "Swiften/Elements/IQ.h"
-
-namespace Swift {
-
-OutgoingLinkLocalSession::OutgoingLinkLocalSession(
-		const JID& localJID,
-		const JID& remoteJID,
-		boost::shared_ptr<Connection> connection,
-		PayloadParserFactoryCollection* payloadParserFactories, 
-		PayloadSerializerCollection* payloadSerializers) :
-			Session(connection, payloadParserFactories, payloadSerializers) {
-	setLocalJID(localJID);
-	setRemoteJID(remoteJID);
-}
-
-void OutgoingLinkLocalSession::handleSessionStarted() {
-	ProtocolHeader header;
-	header.setFrom(getLocalJID());
-	getXMPPLayer()->writeHeader(header);
-}
-
-void OutgoingLinkLocalSession::handleStreamStart(const ProtocolHeader&) {
-	foreach(const boost::shared_ptr<Element>& stanza, queuedElements_) {
-		sendElement(stanza);
-	}
-	queuedElements_.clear();
-}
-
-void OutgoingLinkLocalSession::handleElement(boost::shared_ptr<Element> element) {
-	onElementReceived(element);
-}
-
-void OutgoingLinkLocalSession::queueElement(boost::shared_ptr<Element> element) {
-	queuedElements_.push_back(element);
-}
-
-
-}
diff --git a/Swiften/LinkLocal/OutgoingLinkLocalSession.h b/Swiften/LinkLocal/OutgoingLinkLocalSession.h
deleted file mode 100644
index 32f78e4..0000000
--- a/Swiften/LinkLocal/OutgoingLinkLocalSession.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/signal.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <vector>
-
-#include "Swiften/Session/Session.h"
-#include "Swiften/JID/JID.h"
-
-namespace Swift {
-	class ConnectionFactory;
-	class String;
-	class Element;
-	class PayloadParserFactoryCollection;
-	class PayloadSerializerCollection;
-
-	class OutgoingLinkLocalSession : public Session {
-		public:
-			OutgoingLinkLocalSession(
-					const JID& localJID,
-					const JID& remoteJID,
-					boost::shared_ptr<Connection> connection,
-					PayloadParserFactoryCollection* payloadParserFactories, 
-					PayloadSerializerCollection* payloadSerializers);
-
-			void queueElement(boost::shared_ptr<Element> element);
-
-		private:
-			void handleSessionStarted();
-			void handleElement(boost::shared_ptr<Element>);
-			void handleStreamStart(const ProtocolHeader&);
-
-		private:
-			std::vector<boost::shared_ptr<Element> > queuedElements_;
-	};
-}
diff --git a/Swiften/LinkLocal/SConscript b/Swiften/LinkLocal/SConscript
deleted file mode 100644
index b929db1..0000000
--- a/Swiften/LinkLocal/SConscript
+++ /dev/null
@@ -1,37 +0,0 @@
-Import("swiften_env")
-
-myenv = swiften_env.Clone()
-myenv.MergeFlags(swiften_env.get("BONJOUR_FLAGS", ""))
-
-sources = [
-		"DNSSD/DNSSDBrowseQuery.cpp",
-		"DNSSD/DNSSDQuerier.cpp",
-		"DNSSD/DNSSDRegisterQuery.cpp",
-		"DNSSD/DNSSDResolveHostnameQuery.cpp",
-		"DNSSD/DNSSDResolveServiceQuery.cpp",
-		"DNSSD/DNSSDServiceID.cpp",
-		"DNSSD/Fake/FakeDNSSDQuerier.cpp",
-		"DNSSD/Fake/FakeDNSSDQuery.cpp",
-		"DNSSD/PlatformDNSSDQuerierFactory.cpp",
-		"IncomingLinkLocalSession.cpp",
-		"LinkLocalConnector.cpp",
-		"LinkLocalService.cpp",
-		"LinkLocalServiceBrowser.cpp",
-		"LinkLocalServiceInfo.cpp",
-		"OutgoingLinkLocalSession.cpp",
-	]
-
-if myenv.get("HAVE_BONJOUR", 0) :
-	myenv.Append(CPPDEFINES = "HAVE_BONJOUR")
-	sources += [
-			"DNSSD/Bonjour/BonjourQuerier.cpp",
-			"DNSSD/Bonjour/BonjourQuery.cpp",
-		]
-elif myenv.get("HAVE_AVAHI", 0) :
-	sources += [
-			"DNSSD/Avahi/AvahiQuerier.cpp",
-			"DNSSD/Avahi/AvahiQuery.cpp"
-		]
-
-objects = myenv.StaticObject(sources)
-swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/LinkLocal/UnitTest/LinkLocalConnectorTest.cpp b/Swiften/LinkLocal/UnitTest/LinkLocalConnectorTest.cpp
deleted file mode 100644
index ee5e414..0000000
--- a/Swiften/LinkLocal/UnitTest/LinkLocalConnectorTest.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/LinkLocal/LinkLocalConnector.h"
-#include "Swiften/LinkLocal/LinkLocalService.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveHostnameQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h"
-#include "Swiften/EventLoop/DummyEventLoop.h"
-#include "Swiften/Network/FakeConnection.h"
-
-using namespace Swift;
-
-class LinkLocalConnectorTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(LinkLocalConnectorTest);
-		CPPUNIT_TEST(testConnect);
-		CPPUNIT_TEST(testConnect_UnableToResolve);
-		CPPUNIT_TEST(testConnect_UnableToConnect);
-		CPPUNIT_TEST(testCancel_DuringResolve);
-		CPPUNIT_TEST(testCancel_DuringConnect);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void setUp() {
-			eventLoop = new DummyEventLoop();
-			querier = boost::shared_ptr<FakeDNSSDQuerier>(
-					new FakeDNSSDQuerier("rabbithole.local"));
-			connection = boost::shared_ptr<FakeConnection>(new FakeConnection());
-			connectFinished = false;
-		}
-
-		void tearDown() {
-			delete eventLoop;
-		}
-
-		void testConnect() {
-			boost::shared_ptr<LinkLocalConnector> 
-					testling(createConnector("rabbithole.local", 1234));
-			querier->setAddress("rabbithole.local", HostAddress("192.168.1.1"));
-
-			testling->connect();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT(connectFinished);
-			CPPUNIT_ASSERT(!connectError);
-			CPPUNIT_ASSERT(connection->connectedTo);
-			CPPUNIT_ASSERT_EQUAL(String(connection->connectedTo->getAddress().toString()), String("192.168.1.1"));
-			CPPUNIT_ASSERT_EQUAL(connection->connectedTo->getPort(), 1234);
-		}
-
-		void testConnect_UnableToResolve() {
-			boost::shared_ptr<LinkLocalConnector> 
-					testling(createConnector("rabbithole.local", 1234));
-			querier->setAddress("rabbithole.local", boost::optional<HostAddress>());
-
-			testling->connect();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT(connectFinished);
-			CPPUNIT_ASSERT(connectError);
-			CPPUNIT_ASSERT(!connection->connectedTo);
-		}
-
-		void testConnect_UnableToConnect() {
-			boost::shared_ptr<LinkLocalConnector> 
-					testling(createConnector("rabbithole.local", 1234));
-			querier->setAddress("rabbithole.local", HostAddress("192.168.1.1"));
-			connection->setError(Connection::ReadError);
-
-			testling->connect();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT(connectFinished);
-			CPPUNIT_ASSERT(connectError);
-			CPPUNIT_ASSERT(!connection->connectedTo);
-		}
-
-		void testCancel_DuringResolve() {
-			boost::shared_ptr<LinkLocalConnector> 
-					testling(createConnector("rabbithole.local", 1234));
-			testling->connect();
-			eventLoop->processEvents();
-			CPPUNIT_ASSERT(!connectFinished);
-
-			testling->cancel();
-			eventLoop->processEvents();
-			querier->setAddress("rabbithole.local", HostAddress("192.168.1.1"));
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT(FakeConnection::Disconnected == connection->state);
-		}
-
-		void testCancel_DuringConnect() {
-			boost::shared_ptr<LinkLocalConnector> 
-					testling(createConnector("rabbithole.local", 1234));
-			querier->setAddress("rabbithole.local", HostAddress("192.168.1.1"));
-			connection->setDelayConnect();
-			testling->connect();
-			eventLoop->processEvents();
-			CPPUNIT_ASSERT(FakeConnection::Connecting == connection->state);
-
-			testling->cancel();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT(FakeConnection::Disconnected == connection->state);
-		}
-	
-	private:
-		boost::shared_ptr<LinkLocalConnector> createConnector(const String& hostname, int port) {
-			LinkLocalService service(
-					DNSSDServiceID("myname", "local."),
-					DNSSDResolveServiceQuery::Result(
-						"myname._presence._tcp.local", hostname, port,
-						LinkLocalServiceInfo().toTXTRecord()));
-			boost::shared_ptr<LinkLocalConnector> result(
-					new LinkLocalConnector(service, querier, connection));
-			result->onConnectFinished.connect(
-					boost::bind(&LinkLocalConnectorTest::handleConnected, this, _1));
-			return result;
-		}
-
-		void handleConnected(bool e) {
-			connectFinished = true;
-			connectError = e;
-		}
-	
-	private:
-		DummyEventLoop* eventLoop;
-		boost::shared_ptr<FakeDNSSDQuerier> querier;
-		boost::shared_ptr<FakeConnection> connection;
-		bool connectFinished;
-		bool connectError;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(LinkLocalConnectorTest);
diff --git a/Swiften/LinkLocal/UnitTest/LinkLocalServiceBrowserTest.cpp b/Swiften/LinkLocal/UnitTest/LinkLocalServiceBrowserTest.cpp
deleted file mode 100644
index 9f91269..0000000
--- a/Swiften/LinkLocal/UnitTest/LinkLocalServiceBrowserTest.cpp
+++ /dev/null
@@ -1,379 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/bind.hpp>
-#include <map>
-
-#include "Swiften/LinkLocal/LinkLocalServiceBrowser.h"
-#include "Swiften/LinkLocal/LinkLocalService.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDServiceID.h"
-#include "Swiften/LinkLocal/DNSSD/DNSSDResolveServiceQuery.h"
-#include "Swiften/LinkLocal/DNSSD/Fake/FakeDNSSDQuerier.h"
-#include "Swiften/EventLoop/DummyEventLoop.h"
-
-using namespace Swift;
-
-class LinkLocalServiceBrowserTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(LinkLocalServiceBrowserTest);
-		CPPUNIT_TEST(testConstructor);
-		CPPUNIT_TEST(testStart);
-		CPPUNIT_TEST(testServiceAdded);
-		CPPUNIT_TEST(testServiceAdded_NoServiceInfo);
-		CPPUNIT_TEST(testServiceAdded_RegisteredService);
-		CPPUNIT_TEST(testServiceAdded_UnregisteredService);
-		CPPUNIT_TEST(testServiceChanged);
-		CPPUNIT_TEST(testServiceRemoved);
-		CPPUNIT_TEST(testServiceRemoved_UnregisteredService);
-		CPPUNIT_TEST(testError_BrowseErrorAfterStart);
-		CPPUNIT_TEST(testError_BrowseErrorAfterResolve);
-		CPPUNIT_TEST(testRegisterService);
-		CPPUNIT_TEST(testRegisterService_Error);
-		CPPUNIT_TEST(testRegisterService_Reregister);
-		CPPUNIT_TEST(testUpdateService);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		LinkLocalServiceBrowserTest() {}
-
-		void setUp() {
-			eventLoop = new DummyEventLoop();
-			querier = boost::shared_ptr<FakeDNSSDQuerier>(new FakeDNSSDQuerier("wonderland.lit"));
-			aliceServiceID = new DNSSDServiceID("alice", "wonderland.lit");
-			aliceServiceInfo = new DNSSDResolveServiceQuery::Result("_presence._tcp.wonderland.lit", "xmpp.wonderland.lit", 1234, LinkLocalServiceInfo().toTXTRecord());
-			testServiceID = new DNSSDServiceID("foo", "bar.local");
-			testServiceInfo = new DNSSDResolveServiceQuery::Result("_presence._tcp.bar.local", "xmpp.bar.local", 1234, LinkLocalServiceInfo().toTXTRecord());
-			testServiceInfo2 = new DNSSDResolveServiceQuery::Result("_presence.tcp.bar.local", "xmpp.foo.local", 2345, LinkLocalServiceInfo().toTXTRecord());
-			errorStopReceived = false;
-			normalStopReceived = false;
-		}
-
-		void tearDown() {
-			addedServices.clear();
-			removedServices.clear();
-			changedServices.clear();
-
-			delete aliceServiceID;
-			delete aliceServiceInfo;
-			delete testServiceInfo2;
-			delete testServiceInfo;
-			delete testServiceID;
-			delete eventLoop;
-		}
-
-		void testConstructor() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-
-			CPPUNIT_ASSERT(!testling->isRunning());
-			CPPUNIT_ASSERT(!testling->hasError());
-		}
-
-		void testStart() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-
-			CPPUNIT_ASSERT(testling->isRunning());
-			CPPUNIT_ASSERT(!testling->hasError());
-
-			testling->stop();
-		}
-
-		void testServiceAdded() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			eventLoop->processEvents();
-
-			querier->setServiceInfo(*testServiceID,*testServiceInfo);
-			querier->addService(*testServiceID);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(addedServices.size()));
-			CPPUNIT_ASSERT(addedServices[0].getID() == *testServiceID);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(changedServices.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(removedServices.size()));
-			std::vector<LinkLocalService> services = testling->getServices();
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(services.size()));
-			CPPUNIT_ASSERT(*testServiceID == services[0].getID());
-			CPPUNIT_ASSERT(testServiceInfo->port == services[0].getPort());
-			CPPUNIT_ASSERT(testServiceInfo->host == services[0].getHostname());
-
-			testling->stop();
-		}
-
-		void testServiceAdded_NoServiceInfo() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			eventLoop->processEvents();
-
-			querier->addService(*testServiceID);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(addedServices.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling->getServices().size()));
-
-			testling->stop();
-		}
-
-		void testServiceAdded_RegisteredService() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			eventLoop->processEvents();
-
-			testling->registerService("alice", 1234, LinkLocalServiceInfo());
-			eventLoop->processEvents();
-			querier->setServiceInfo(*aliceServiceID, *aliceServiceInfo);
-			querier->addService(*aliceServiceID);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(addedServices.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling->getServices().size()));
-
-			testling->stop();
-		}
-
-		void testServiceAdded_UnregisteredService() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			eventLoop->processEvents();
-			testling->registerService("alice", 1234, LinkLocalServiceInfo());
-			eventLoop->processEvents();
-			testling->unregisterService();
-			eventLoop->processEvents();
-
-			querier->setServiceInfo(*aliceServiceID, *aliceServiceInfo);
-			querier->addService(*aliceServiceID);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(addedServices.size()));
-			CPPUNIT_ASSERT(addedServices[0].getID() == *aliceServiceID);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(changedServices.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(removedServices.size()));
-			std::vector<LinkLocalService> services = testling->getServices();
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(services.size()));
-			CPPUNIT_ASSERT(*aliceServiceID == services[0].getID());
-			CPPUNIT_ASSERT(aliceServiceInfo->port == services[0].getPort());
-			CPPUNIT_ASSERT(aliceServiceInfo->host == services[0].getHostname());
-
-			testling->stop();
-		}
-
-		void testServiceRemoved_UnregisteredService() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			eventLoop->processEvents();
-			testling->registerService("alice", 1234, LinkLocalServiceInfo());
-			eventLoop->processEvents();
-			testling->unregisterService();
-			eventLoop->processEvents();
-
-			querier->removeService(*aliceServiceID);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(removedServices.size()));
-
-			testling->stop();
-		}
-
-		void testServiceChanged() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			querier->setServiceInfo(*testServiceID,*testServiceInfo);
-			querier->addService(*testServiceID);
-			eventLoop->processEvents();
-
-			querier->setServiceInfo(*testServiceID,*testServiceInfo2);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(addedServices.size()));
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(changedServices.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(removedServices.size()));
-			CPPUNIT_ASSERT(changedServices[0].getID() == *testServiceID);
-			std::vector<LinkLocalService> services = testling->getServices();
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(services.size()));
-			CPPUNIT_ASSERT(*testServiceID == services[0].getID());
-			CPPUNIT_ASSERT(testServiceInfo2->port == services[0].getPort());
-			CPPUNIT_ASSERT(testServiceInfo2->host == services[0].getHostname());
-
-			testling->stop();
-		}
-
-		void testServiceRemoved() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			querier->setServiceInfo(*testServiceID,*testServiceInfo);
-			querier->addService(*testServiceID);
-			eventLoop->processEvents();
-
-			querier->removeService(*testServiceID);
-			eventLoop->processEvents();
-			querier->setServiceInfo(*testServiceID,*testServiceInfo2);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(addedServices.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(changedServices.size()));
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(removedServices.size()));
-			CPPUNIT_ASSERT(removedServices[0].getID() == *testServiceID);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling->getServices().size()));
-
-			testling->stop();
-		}
-
-		void testError_BrowseErrorAfterStart() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-
-			querier->setBrowseError();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT(!testling->isRunning());
-			CPPUNIT_ASSERT(testling->hasError());
-			CPPUNIT_ASSERT(errorStopReceived);
-		}
-
-		void testError_BrowseErrorAfterResolve() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			querier->setServiceInfo(*testServiceID,*testServiceInfo);
-			querier->addService(*testServiceID);
-			eventLoop->processEvents();
-
-			querier->setBrowseError();
-			eventLoop->processEvents();
-			querier->setServiceInfo(*testServiceID,*testServiceInfo2);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT(!testling->isRunning());
-			CPPUNIT_ASSERT(testling->hasError());
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling->getServices().size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(changedServices.size()));
-			CPPUNIT_ASSERT(errorStopReceived);
-		}
-
-		void testRegisterService() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			eventLoop->processEvents();
-
-			LinkLocalServiceInfo info;
-			info.setFirstName("Foo");
-			testling->registerService("foo@bar", 1234, info);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT(querier->isServiceRegistered("foo@bar", 1234, info.toTXTRecord()));
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(registeredServices.size()));
-			CPPUNIT_ASSERT(registeredServices[0] == DNSSDServiceID("foo@bar", "wonderland.lit"));
-			testling->stop();
-		}
-
-		void testRegisterService_Error() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			LinkLocalServiceInfo info;
-			testling->registerService("foo@bar", 1234, info);
-			eventLoop->processEvents();
-
-			querier->setRegisterError();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT(!testling->isRunning());
-			CPPUNIT_ASSERT(testling->hasError());
-			CPPUNIT_ASSERT(errorStopReceived);
-			CPPUNIT_ASSERT(!querier->isServiceRegistered("foo@bar", 1234, info.toTXTRecord()));
-		}
-
-		void testRegisterService_Reregister() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			eventLoop->processEvents();
-			LinkLocalServiceInfo info;
-			info.setFirstName("Foo");
-			testling->registerService("foo@bar", 1234, info);
-			eventLoop->processEvents();
-			testling->unregisterService();
-			eventLoop->processEvents();
-
-			info.setFirstName("Bar");
-			testling->registerService("bar@baz", 3456, info);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT(querier->isServiceRegistered("bar@baz", 3456, info.toTXTRecord()));
-
-			testling->stop();
-		}
-
-		void testUpdateService() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling = createTestling();
-			testling->start();
-			eventLoop->processEvents();
-
-			LinkLocalServiceInfo info;
-			info.setFirstName("Foo");
-			testling->registerService("foo@bar", 1234, info);
-			eventLoop->processEvents();
-			info.setFirstName("Bar");
-			testling->updateService(info);
-
-			CPPUNIT_ASSERT(querier->isServiceRegistered("foo@bar", 1234, info.toTXTRecord()));
-
-			testling->stop();
-		}
-
-	private:
-		boost::shared_ptr<LinkLocalServiceBrowser> createTestling() {
-			boost::shared_ptr<LinkLocalServiceBrowser> testling(
-					new LinkLocalServiceBrowser(querier));
-			testling->onServiceAdded.connect(boost::bind(
-					&LinkLocalServiceBrowserTest::handleServiceAdded, this, _1));
-			testling->onServiceChanged.connect(boost::bind(
-					&LinkLocalServiceBrowserTest::handleServiceChanged, this, _1));
-			testling->onServiceRemoved.connect(boost::bind(
-					&LinkLocalServiceBrowserTest::handleServiceRemoved, this, _1));
-			testling->onServiceRegistered.connect(boost::bind(
-					&LinkLocalServiceBrowserTest::handleServiceRegistered, this, _1));
-			testling->onStopped.connect(boost::bind(
-					&LinkLocalServiceBrowserTest::handleStopped, this, _1));
-			return testling;
-		}
-
-		void handleServiceAdded(const LinkLocalService& service) {
-			addedServices.push_back(service);
-		}
-
-		void handleServiceRemoved(const LinkLocalService& service) {
-			removedServices.push_back(service);
-		}
-
-		void handleServiceChanged(const LinkLocalService& service) {
-			changedServices.push_back(service);
-		}
-
-		void handleServiceRegistered(const DNSSDServiceID& service) {
-			registeredServices.push_back(service);
-		}
-
-		void handleStopped(bool error) {
-			CPPUNIT_ASSERT(!errorStopReceived);
-			CPPUNIT_ASSERT(!normalStopReceived);
-			if (error) {
-				errorStopReceived = true;
-			}
-			else {
-				normalStopReceived = true;
-			}
-		}
-
-	private:
-		DummyEventLoop* eventLoop;
-		boost::shared_ptr<FakeDNSSDQuerier> querier;
-		std::vector<LinkLocalService> addedServices;
-		std::vector<LinkLocalService> changedServices;
-		std::vector<LinkLocalService> removedServices;
-		std::vector<DNSSDServiceID> registeredServices;
-		DNSSDServiceID* aliceServiceID;
-		DNSSDResolveServiceQuery::Result* aliceServiceInfo;
-		DNSSDServiceID* testServiceID;
-		DNSSDResolveServiceQuery::Result* testServiceInfo;
-		DNSSDResolveServiceQuery::Result* testServiceInfo2;
-		bool errorStopReceived;
-		bool normalStopReceived;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(LinkLocalServiceBrowserTest);
diff --git a/Swiften/LinkLocal/UnitTest/LinkLocalServiceInfoTest.cpp b/Swiften/LinkLocal/UnitTest/LinkLocalServiceInfoTest.cpp
deleted file mode 100644
index b5d7ef5..0000000
--- a/Swiften/LinkLocal/UnitTest/LinkLocalServiceInfoTest.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/LinkLocal/LinkLocalServiceInfo.h"
-
-using namespace Swift;
-
-class LinkLocalServiceInfoTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(LinkLocalServiceInfoTest);
-		CPPUNIT_TEST(testGetTXTRecord);
-		CPPUNIT_TEST(testCreateFromTXTRecord);
-		CPPUNIT_TEST(testCreateFromTXTRecord_InvalidSize);
-		CPPUNIT_TEST(testGetTXTRecordCreateFromTXTRecord_RoundTrip);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testGetTXTRecord() {
-			LinkLocalServiceInfo info;
-			info.setFirstName("Remko");
-			info.setLastName("Tron\xc3\xe7on");
-			info.setStatus(LinkLocalServiceInfo::Away);
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\x09txtvers=1\x09" + String("1st=Remko\x0dlast=Tron\xc3\xe7on\x0bstatus=away")), info.toTXTRecord());
-		}
-
-		void testCreateFromTXTRecord() {
-			LinkLocalServiceInfo info = LinkLocalServiceInfo::createFromTXTRecord(ByteArray("\x09txtvers=1\x09" + String("1st=Remko\x0dlast=Tron\xc3\xe7on\x0bstatus=away")));
-
-			CPPUNIT_ASSERT_EQUAL(String("Remko"), info.getFirstName());
-			CPPUNIT_ASSERT_EQUAL(String("Tron\xc3\xe7on"), info.getLastName());
-			CPPUNIT_ASSERT_EQUAL(LinkLocalServiceInfo::Away, info.getStatus());
-		}
-
-		void testCreateFromTXTRecord_InvalidSize() {
-			LinkLocalServiceInfo info = LinkLocalServiceInfo::createFromTXTRecord(ByteArray("\x10last=a"));
-
-			CPPUNIT_ASSERT_EQUAL(String("a"), info.getLastName());
-		}
-
-		void testGetTXTRecordCreateFromTXTRecord_RoundTrip() {
-			LinkLocalServiceInfo info;
-			info.setFirstName("Remko");
-			info.setLastName("Tron\xc3\xe7on");
-			info.setEMail("remko-email@swift.im");
-			info.setJID(JID("remko-jid@swift.im"));
-			info.setMessage("I'm busy");
-			info.setNick("el-tramo");
-			info.setStatus(LinkLocalServiceInfo::DND);
-			info.setPort(1234);
-
-			LinkLocalServiceInfo info2 = LinkLocalServiceInfo::createFromTXTRecord(info.toTXTRecord());
-			CPPUNIT_ASSERT_EQUAL(info.getFirstName(), info2.getFirstName());
-			CPPUNIT_ASSERT_EQUAL(info.getLastName(), info2.getLastName());
-			CPPUNIT_ASSERT_EQUAL(info.getEMail(), info2.getEMail());
-			CPPUNIT_ASSERT_EQUAL(info.getJID(), info2.getJID());
-			CPPUNIT_ASSERT_EQUAL(info.getMessage(), info2.getMessage());
-			CPPUNIT_ASSERT_EQUAL(info.getNick(), info2.getNick());
-			CPPUNIT_ASSERT(info.getStatus() == info2.getStatus());
-			CPPUNIT_ASSERT(info.getPort() == info2.getPort());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(LinkLocalServiceInfoTest);
diff --git a/Swiften/LinkLocal/UnitTest/LinkLocalServiceTest.cpp b/Swiften/LinkLocal/UnitTest/LinkLocalServiceTest.cpp
deleted file mode 100644
index 69ec718..0000000
--- a/Swiften/LinkLocal/UnitTest/LinkLocalServiceTest.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/LinkLocal/LinkLocalService.h"
-
-using namespace Swift;
-
-class LinkLocalServiceTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(LinkLocalServiceTest);
-		CPPUNIT_TEST(testGetDescription_WithNick);
-		CPPUNIT_TEST(testGetDescription_WithFirstName);
-		CPPUNIT_TEST(testGetDescription_WithLastName);
-		CPPUNIT_TEST(testGetDescription_WithFirstAndLastName);
-		CPPUNIT_TEST(testGetDescription_NoInfo);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testGetDescription_WithNick() {
-			LinkLocalService testling = createService("alice@wonderland", "Alice", "Alice In", "Wonderland");
-
-			CPPUNIT_ASSERT_EQUAL(String("Alice"), testling.getDescription());
-		}
-
-		void testGetDescription_WithFirstName() {
-			LinkLocalService testling = createService("alice@wonderland", "", "Alice In");
-
-			CPPUNIT_ASSERT_EQUAL(String("Alice In"), testling.getDescription());
-		}
-
-		void testGetDescription_WithLastName() {
-			LinkLocalService testling = createService("alice@wonderland", "", "", "Wonderland");
-
-			CPPUNIT_ASSERT_EQUAL(String("Wonderland"), testling.getDescription());
-		}
-
-		void testGetDescription_WithFirstAndLastName() {
-			LinkLocalService testling = createService("alice@wonderland", "", "Alice In", "Wonderland");
-
-			CPPUNIT_ASSERT_EQUAL(String("Alice In Wonderland"), testling.getDescription());
-		}
-
-		void testGetDescription_NoInfo() {
-			LinkLocalService testling = createService("alice@wonderland");
-
-			CPPUNIT_ASSERT_EQUAL(String("alice@wonderland"), testling.getDescription());
-		}
-	
-	private:
-		LinkLocalService createService(const String& name, const String& nickName = String(), const String& firstName = String(), const String& lastName = String()) {
-			DNSSDServiceID service(name, "local.");
-			LinkLocalServiceInfo info;
-			info.setFirstName(firstName);
-			info.setLastName(lastName);
-			info.setNick(nickName);
-			return LinkLocalService(service, 
-					DNSSDResolveServiceQuery::Result(
-						name + "._presence._tcp.local", "rabbithole.local", 1234, 
-						info.toTXTRecord()));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(LinkLocalServiceTest);
diff --git a/Swiften/MUC/MUC.cpp b/Swiften/MUC/MUC.cpp
deleted file mode 100644
index 3c06c7a..0000000
--- a/Swiften/MUC/MUC.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "Swiften/MUC/MUC.h"
-
-#include <boost/bind.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Presence/PresenceSender.h"
-#include "Swiften/Client/StanzaChannel.h"
-#include "Swiften/Elements/IQ.h"
-#include "Swiften/Elements/MUCPayload.h"
-
-namespace Swift {
-
-typedef std::pair<String, MUCOccupant> StringMUCOccupantPair;
-
-MUC::MUC(StanzaChannel* stanzaChannel, PresenceSender* presenceSender, const JID &muc) : ownMUCJID(muc), stanzaChannel(stanzaChannel), presenceSender(presenceSender) {
-	scopedConnection_ = stanzaChannel->onPresenceReceived.connect(boost::bind(&MUC::handleIncomingPresence, this, _1));
-}
-
-void MUC::joinAs(const String &nick) {
-	firstPresenceSeen = false;
-
-	ownMUCJID = JID(ownMUCJID.getNode(), ownMUCJID.getDomain(), nick);
-
-	boost::shared_ptr<Presence> joinPresence(new Presence());
-	joinPresence->setTo(ownMUCJID);
-	joinPresence->addPayload(boost::shared_ptr<Payload>(new MUCPayload()));
-	presenceSender->sendPresence(joinPresence);
-}
-
-void MUC::part() {
-	presenceSender->removeDirectedPresenceReceiver(ownMUCJID);
-}
-
-void MUC::handleIncomingPresence(boost::shared_ptr<Presence> presence) {
-	if (!isFromMUC(presence->getFrom())) {
-		return;
-	}
-
-	if (!firstPresenceSeen) {
-		if (presence->getType() == Presence::Error) {
-			onJoinComplete(JoinFailed);
-			return;
-		}
-		firstPresenceSeen = true;
-		onJoinComplete(JoinSucceeded);
-		presenceSender->addDirectedPresenceReceiver(ownMUCJID);
-	}
-
-	String nick = presence->getFrom().getResource();
-	if (nick.isEmpty()) {
-		return;
-	}
-	if (presence->getType() == Presence::Unavailable) {
-		std::map<String,MUCOccupant>::iterator i = occupants.find(nick);
-		if (i != occupants.end()) {
-			onOccupantLeft(i->second, Part, "");
-			occupants.erase(i);
-		}
-	}
-	else if (presence->getType() == Presence::Available) {
-		std::pair<std::map<String,MUCOccupant>::iterator, bool> result = occupants.insert(std::make_pair(nick, MUCOccupant(nick)));
-		if (result.second) {
-			onOccupantJoined(result.first->second);
-		}
-		onOccupantPresenceChange(presence);
-	}
-}
-
-
-}
diff --git a/Swiften/MUC/MUC.h b/Swiften/MUC/MUC.h
deleted file mode 100644
index 1ef974f..0000000
--- a/Swiften/MUC/MUC.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#pragma once
-
-#include "Swiften/JID/JID.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Message.h"
-#include "Swiften/Elements/Presence.h"
-#include "Swiften/MUC/MUCOccupant.h"
-
-#include <boost/shared_ptr.hpp>
-#include <boost/signals.hpp>
-#include <boost/signals/connection.hpp>
-
-#include <map>
-
-namespace Swift {
-	class StanzaChannel;
-	class PresenceSender;
-
-	class MUC {
-		public:
-			enum JoinResult { JoinSucceeded, JoinFailed };
-			enum LeavingType { Part };
-
-		public:
-			MUC(StanzaChannel* stanzaChannel, PresenceSender* presenceSender, const JID &muc);
-
-			void joinAs(const String &nick);
-			String getCurrentNick();
-			void part();
-			void handleIncomingMessage(boost::shared_ptr<Message> message);
-
-		public:
-			boost::signal<void (JoinResult)> onJoinComplete;
-			boost::signal<void (boost::shared_ptr<Presence>)> onOccupantPresenceChange;
-			boost::signal<void (const MUCOccupant&)> onOccupantJoined;
-			/**Occupant, type, and reason. */
-			boost::signal<void (const MUCOccupant&, LeavingType, const String&)> onOccupantLeft;
-
-		private:
-			bool isFromMUC(const JID& j) const {
-				return ownMUCJID.equals(j, JID::WithoutResource);
-			}
-
-			const String& getOwnNick() const {
-				return ownMUCJID.getResource();
-			}
-
-		private:
-			void handleIncomingPresence(boost::shared_ptr<Presence> presence);
-
-		private:
-			JID ownMUCJID;
-			StanzaChannel* stanzaChannel;
-			PresenceSender* presenceSender;
-			std::map<String, MUCOccupant> occupants;
-			bool firstPresenceSeen;
-			boost::bsignals::scoped_connection scopedConnection_;
-	};
-}
diff --git a/Swiften/MUC/MUCBookmark.h b/Swiften/MUC/MUCBookmark.h
deleted file mode 100644
index 439e716..0000000
--- a/Swiften/MUC/MUCBookmark.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#pragma once
-
-#include <boost/optional.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/JID/JID.h"
-
-namespace Swift {
-	class MUCBookmark {
-		public:
-			MUCBookmark(const JID& room, const String& bookmarkName) : room_(room), name_(bookmarkName){};
-			void setAutojoin(bool enabled) {autojoin_ = enabled;};
-			void setNick(const boost::optional<String>& nick) {nick_ = nick;};
-			void setPassword(const boost::optional<String>& password) {password_ = password;};
-			bool getAutojoin() const {return autojoin_;};
-			const boost::optional<String>& getNick() const {return nick_;};
-			const boost::optional<String>& getPassword() const {return password_;};
-			const String& getName() const {return name_;};
-			const JID& getRoom() const {return room_;};
-		private:
-			JID room_;
-			String name_;
-			boost::optional<String> nick_;
-			boost::optional<String> password_;
-			bool autojoin_;
-	};
-}
-
diff --git a/Swiften/MUC/MUCBookmarkManager.cpp b/Swiften/MUC/MUCBookmarkManager.cpp
deleted file mode 100644
index f9295e2..0000000
--- a/Swiften/MUC/MUCBookmarkManager.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "MUCBookmarkManager.h"
-
-#include "Swiften/Queries/IQRouter.h"
-
-namespace Swift {
-
-MUCBookmarkManager::MUCBookmarkManager(IQRouter* iqRouter) {
-	iqRouter_ = iqRouter;
-}
-
-void MUCBookmarkManager::addBookmark(boost::shared_ptr<MUCBookmark> bookmark) {
-	bookmarks_.push_back(bookmark);
-	flush();
-	onBookmarkAdded(bookmark);
-}
-
-
-void MUCBookmarkManager::removeBookmark(boost::shared_ptr<MUCBookmark> bookmark) {
-	std::vector<boost::shared_ptr<MUCBookmark> >::iterator it;
-	for (it = bookmarks_.begin(); it != bookmarks_.end(); it++) {
-		if ((*it).get() == bookmark.get()) {
-			bookmarks_.erase(it);
-			onBookmarkRemoved(bookmark);
-			return;
-		}
-	}
-	assert(false);
-	flush();
-}
-
-void MUCBookmarkManager::flush() {
-	//FIXME: some code may be useful
-}
-
-const std::vector<boost::shared_ptr<MUCBookmark> >& MUCBookmarkManager::getBookmarks() {
-	return bookmarks_;
-}
-
-}
diff --git a/Swiften/MUC/MUCBookmarkManager.h b/Swiften/MUC/MUCBookmarkManager.h
deleted file mode 100644
index ade2e3e..0000000
--- a/Swiften/MUC/MUCBookmarkManager.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#pragma once
-
-#include <vector>
-
-#include <boost/shared_ptr.hpp>
-#include <boost/signals.hpp>
-
-#include "Swiften/MUC/MUCBookmark.h"
-
-namespace Swift {
-	class IQRouter;
-	class MUCBookmarkManager {
-		public:
-			MUCBookmarkManager(IQRouter* iqRouter);
-			void addBookmark(boost::shared_ptr<MUCBookmark> bookmark);
-			void removeBookmark(boost::shared_ptr<MUCBookmark> bookmark);
-			/** Call flush after editing an existing bookmark. */
-			void flush();
-			/** Returns pointers to the bookmarks. These can be edited, and then flush()ed.*/
-			const std::vector<boost::shared_ptr<MUCBookmark> >& getBookmarks(); 
-			boost::signal<void (boost::shared_ptr<MUCBookmark>)> onBookmarkAdded;
-			boost::signal<void (boost::shared_ptr<MUCBookmark>)> onBookmarkRemoved;
-		private:
-			
-			std::vector<boost::shared_ptr<MUCBookmark> > bookmarks_;
-			IQRouter* iqRouter_;
-	};
-}
diff --git a/Swiften/MUC/MUCOccupant.cpp b/Swiften/MUC/MUCOccupant.cpp
deleted file mode 100644
index 6ed8591..0000000
--- a/Swiften/MUC/MUCOccupant.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-#include "Swiften/MUC/MUCOccupant.h"
-
-namespace Swift {
-
-MUCOccupant::MUCOccupant(const String &nick) : nick_(nick) {
-}
-
-MUCOccupant::~MUCOccupant() {
-}
-
-String MUCOccupant::getNick() const {
-	return nick_;
-}
-
-}
diff --git a/Swiften/MUC/MUCOccupant.h b/Swiften/MUC/MUCOccupant.h
deleted file mode 100644
index 22e58ac..0000000
--- a/Swiften/MUC/MUCOccupant.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef SWIFTEN_MUCOccupant_H
-#define SWIFTEN_MUCOccupant_H
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class Client;
-
-	class MUCOccupant {
-		public:
-			MUCOccupant(const String &nick);
-			~MUCOccupant();
-
-			String getNick() const;
-
-		private:
-			String nick_;
-	};
-}
-
-#endif
diff --git a/Swiften/MUC/MUCRegistry.cpp b/Swiften/MUC/MUCRegistry.cpp
deleted file mode 100644
index 95bab08..0000000
--- a/Swiften/MUC/MUCRegistry.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/MUC/MUCRegistry.h"
-
-namespace Swift {
-
-MUCRegistry::~MUCRegistry() {
-}
-
-}
diff --git a/Swiften/MUC/MUCRegistry.h b/Swiften/MUC/MUCRegistry.h
deleted file mode 100644
index a843abb..0000000
--- a/Swiften/MUC/MUCRegistry.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#pragma once
-
-namespace Swift {
-	class JID;
-
-	class MUCRegistry {
-		public:
-			virtual ~MUCRegistry();
-
-			virtual bool isMUC(const JID&) const = 0;
-	};
-}
diff --git a/Swiften/Network/BoostConnection.cpp b/Swiften/Network/BoostConnection.cpp
deleted file mode 100644
index 0d62300..0000000
--- a/Swiften/Network/BoostConnection.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-#include "Swiften/Network/BoostConnection.h"
-
-#include <iostream>
-#include <boost/bind.hpp>
-#include <boost/thread.hpp>
-
-#include "Swiften/EventLoop/MainEventLoop.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Network/HostAddressPort.h"
-
-namespace Swift {
-
-static const size_t BUFFER_SIZE = 4096;
-
-// -----------------------------------------------------------------------------
-
-// A reference-counted non-modifiable buffer class.
-class SharedBuffer {
-	public:
-		SharedBuffer(const ByteArray& data) : 
-				data_(new std::vector<char>(data.begin(), data.end())),
-				buffer_(boost::asio::buffer(*data_)) {
-		}
-
-		// ConstBufferSequence requirements.
-		typedef boost::asio::const_buffer value_type;
-		typedef const boost::asio::const_buffer* const_iterator;
-		const boost::asio::const_buffer* begin() const { return &buffer_; }
-		const boost::asio::const_buffer* end() const { return &buffer_ + 1; }
-
-	private:
-		boost::shared_ptr< std::vector<char> > data_;
-		boost::asio::const_buffer buffer_;
-};
-
-// -----------------------------------------------------------------------------
-
-BoostConnection::BoostConnection(boost::asio::io_service* ioService) :
-		socket_(*ioService), readBuffer_(BUFFER_SIZE) {
-}
-
-BoostConnection::~BoostConnection() {
-}
-
-void BoostConnection::listen() {
-	doRead();
-}
-
-void BoostConnection::connect(const HostAddressPort& addressPort) {
-	boost::asio::ip::tcp::endpoint endpoint(	
-			boost::asio::ip::address::from_string(addressPort.getAddress().toString()), addressPort.getPort());
-	socket_.async_connect(
-			endpoint,
-			boost::bind(&BoostConnection::handleConnectFinished, shared_from_this(), boost::asio::placeholders::error));
-}
-
-void BoostConnection::disconnect() {
-	//MainEventLoop::removeEventsFromOwner(shared_from_this());
-	socket_.close();
-}
-
-void BoostConnection::write(const ByteArray& data) {
-	boost::asio::async_write(socket_, SharedBuffer(data),
-			boost::bind(&BoostConnection::handleDataWritten, shared_from_this(), boost::asio::placeholders::error));
-}
-
-void BoostConnection::handleConnectFinished(const boost::system::error_code& error) {
-	if (!error) {
-		MainEventLoop::postEvent(boost::bind(boost::ref(onConnectFinished), false), shared_from_this());
-		doRead();
-	}
-	else if (error != boost::asio::error::operation_aborted) {
-		MainEventLoop::postEvent(boost::bind(boost::ref(onConnectFinished), true), shared_from_this());
-	}
-}
-
-void BoostConnection::doRead() {
-	socket_.async_read_some(
-			boost::asio::buffer(readBuffer_),
-			boost::bind(&BoostConnection::handleSocketRead, shared_from_this(), boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
-}
-
-void BoostConnection::handleSocketRead(const boost::system::error_code& error, size_t bytesTransferred) {
-	if (!error) {
-		MainEventLoop::postEvent(boost::bind(boost::ref(onDataRead), ByteArray(&readBuffer_[0], bytesTransferred)), shared_from_this());
-		doRead();
-	}
-	else if (error == boost::asio::error::eof) {
-		MainEventLoop::postEvent(boost::bind(boost::ref(onDisconnected), boost::optional<Error>()), shared_from_this());
-	}
-	else if (error != boost::asio::error::operation_aborted) {
-		MainEventLoop::postEvent(boost::bind(boost::ref(onDisconnected), ReadError), shared_from_this());
-	}
-}
-
-void BoostConnection::handleDataWritten(const boost::system::error_code& error) {
-	if (!error) {
-		return;
-	}
-	if (error == boost::asio::error::eof) {
-		MainEventLoop::postEvent(boost::bind(boost::ref(onDisconnected), boost::optional<Error>()), shared_from_this());
-	}
-	else if (error && error != boost::asio::error::operation_aborted) {
-		MainEventLoop::postEvent(boost::bind(boost::ref(onDisconnected), WriteError), shared_from_this());
-	}
-}
-
-}
diff --git a/Swiften/Network/BoostConnection.h b/Swiften/Network/BoostConnection.h
deleted file mode 100644
index ae09fb8..0000000
--- a/Swiften/Network/BoostConnection.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-
-#include <boost/asio.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "Swiften/Network/Connection.h"
-#include "Swiften/EventLoop/EventOwner.h"
-
-namespace boost {
-	class thread;
-	namespace system {
-		class error_code;
-	}
-}
-
-namespace Swift {
-	class BoostConnection : public Connection, public EventOwner, public boost::enable_shared_from_this<BoostConnection> {
-		public:
-			BoostConnection(boost::asio::io_service* ioService);
-			~BoostConnection();
-
-			virtual void listen();
-			virtual void connect(const HostAddressPort& address);
-			virtual void disconnect();
-			virtual void write(const ByteArray& data);
-
-			boost::asio::ip::tcp::socket& getSocket() {
-				return socket_;
-			}
-
-		private:
-			void handleConnectFinished(const boost::system::error_code& error);
-			void handleSocketRead(const boost::system::error_code& error, size_t bytesTransferred);
-			void handleDataWritten(const boost::system::error_code& error);
-			void doRead();
-
-		private:
-			boost::asio::ip::tcp::socket socket_;
-			std::vector<char> readBuffer_;
-			bool disconnecting_;
-	};
-}
diff --git a/Swiften/Network/BoostConnectionFactory.cpp b/Swiften/Network/BoostConnectionFactory.cpp
deleted file mode 100644
index 3f62730..0000000
--- a/Swiften/Network/BoostConnectionFactory.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "Swiften/Network/BoostConnectionFactory.h"
-#include "Swiften/Network/BoostConnection.h"
-
-namespace Swift {
-
-BoostConnectionFactory::BoostConnectionFactory(boost::asio::io_service* ioService) : ioService(ioService) {
-}
-
-boost::shared_ptr<Connection> BoostConnectionFactory::createConnection() {
-	return boost::shared_ptr<Connection>(new BoostConnection(ioService));
-}
-
-}
diff --git a/Swiften/Network/BoostConnectionFactory.h b/Swiften/Network/BoostConnectionFactory.h
deleted file mode 100644
index 5695c6c..0000000
--- a/Swiften/Network/BoostConnectionFactory.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include <boost/asio.hpp>
-
-#include "Swiften/Network/ConnectionFactory.h"
-#include "Swiften/Network/BoostConnection.h"
-
-namespace Swift {
-	class BoostConnection;
-
-	class BoostConnectionFactory : public ConnectionFactory {
-		public:
-			BoostConnectionFactory(boost::asio::io_service*);
-
-			virtual boost::shared_ptr<Connection> createConnection();
-
-		private:
-			boost::asio::io_service* ioService;
-	};
-}
diff --git a/Swiften/Network/BoostConnectionServer.cpp b/Swiften/Network/BoostConnectionServer.cpp
deleted file mode 100644
index cea016d..0000000
--- a/Swiften/Network/BoostConnectionServer.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#include "Swiften/Network/BoostConnectionServer.h"
-
-#include <boost/bind.hpp>
-#include <boost/system/system_error.hpp>
-
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-
-BoostConnectionServer::BoostConnectionServer(int port, boost::asio::io_service* ioService) : port_(port), ioService_(ioService), acceptor_(NULL) {
-}
-
-
-void BoostConnectionServer::start() {
-	try {
-		assert(!acceptor_);
-		acceptor_ = new boost::asio::ip::tcp::acceptor(
-				*ioService_, 
-				boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port_));
-		acceptNextConnection();
-	}
-	catch (const boost::system::system_error& e) {
-		if (e.code() == boost::asio::error::address_in_use) {
-			MainEventLoop::postEvent(boost::bind(boost::ref(onStopped), Conflict), shared_from_this());
-		}
-		else {
-			MainEventLoop::postEvent(boost::bind(boost::ref(onStopped), UnknownError), shared_from_this());
-		}
-	}
-}
-
-
-void BoostConnectionServer::stop() {
-	stop(boost::optional<Error>());
-}
-
-void BoostConnectionServer::stop(boost::optional<Error> e) {
-	if (acceptor_) {
-		acceptor_->close();
-		delete acceptor_;
-		acceptor_ = NULL;
-	}
-	MainEventLoop::postEvent(boost::bind(boost::ref(onStopped), e), shared_from_this());
-}
-
-void BoostConnectionServer::acceptNextConnection() {
-	boost::shared_ptr<BoostConnection> newConnection(new BoostConnection(&acceptor_->io_service()));
-	acceptor_->async_accept(newConnection->getSocket(), 
-		boost::bind(&BoostConnectionServer::handleAccept, shared_from_this(), newConnection, boost::asio::placeholders::error));
-}
-
-void BoostConnectionServer::handleAccept(boost::shared_ptr<BoostConnection> newConnection, const boost::system::error_code& error) {
-	if (error) {
-		MainEventLoop::postEvent(
-				boost::bind(
-						&BoostConnectionServer::stop, shared_from_this(), UnknownError), 
-				shared_from_this());
-	}
-	else {
-		MainEventLoop::postEvent(
-				boost::bind(boost::ref(onNewConnection), newConnection), 
-				shared_from_this());
-		newConnection->listen();
-		acceptNextConnection();
-	}
-}
-
-}
diff --git a/Swiften/Network/BoostConnectionServer.h b/Swiften/Network/BoostConnectionServer.h
deleted file mode 100644
index d8e5eb4..0000000
--- a/Swiften/Network/BoostConnectionServer.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <boost/asio.hpp>
-#include <boost/signal.hpp>
-
-#include "Swiften/Network/BoostConnection.h"
-#include "Swiften/Network/ConnectionServer.h"
-#include "Swiften/EventLoop/EventOwner.h"
-
-namespace Swift {
-	class BoostConnectionServer : public ConnectionServer, public EventOwner, public boost::enable_shared_from_this<BoostConnectionServer> {
-		public:
-			enum Error {
-				Conflict,
-				UnknownError
-			};
-			BoostConnectionServer(int port, boost::asio::io_service* ioService);
-
-			void start();
-			void stop();
-
-			boost::signal<void (boost::optional<Error>)> onStopped;
-
-		private:
-			void stop(boost::optional<Error> e);
-			void acceptNextConnection();
-			void handleAccept(boost::shared_ptr<BoostConnection> newConnection, const boost::system::error_code& error);
-
-		private:
-			int port_;
-			boost::asio::io_service* ioService_;
-			boost::asio::ip::tcp::acceptor* acceptor_;
-	};
-}
diff --git a/Swiften/Network/BoostIOServiceThread.cpp b/Swiften/Network/BoostIOServiceThread.cpp
deleted file mode 100644
index 01c3bf3..0000000
--- a/Swiften/Network/BoostIOServiceThread.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-#include "Swiften/Network/BoostIOServiceThread.h"
-
-namespace Swift {
-
-BoostIOServiceThread::BoostIOServiceThread() : thread_(boost::bind(&BoostIOServiceThread::doRun, this)) {
-}
-
-BoostIOServiceThread::~BoostIOServiceThread() {
-	ioService_.stop();
-	thread_.join();
-}
-
-void BoostIOServiceThread::doRun() {
-	boost::asio::io_service::work work(ioService_);
-	ioService_.run();
-}
-
-}
diff --git a/Swiften/Network/BoostIOServiceThread.h b/Swiften/Network/BoostIOServiceThread.h
deleted file mode 100644
index ddc90bf..0000000
--- a/Swiften/Network/BoostIOServiceThread.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-#include <boost/asio.hpp>
-#include <boost/thread.hpp>
-
-namespace Swift {
-	class BoostIOServiceThread {
-		public:
-			BoostIOServiceThread();
-			~BoostIOServiceThread();
-
-			boost::asio::io_service& getIOService() {
-				return ioService_;
-			}
-
-		private:
-			void doRun();
-
-		private:
-			boost::asio::io_service ioService_;
-			boost::thread thread_;
-	};
-}
diff --git a/Swiften/Network/BoostTimer.cpp b/Swiften/Network/BoostTimer.cpp
deleted file mode 100644
index fdbd45d..0000000
--- a/Swiften/Network/BoostTimer.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "Swiften/Network/BoostTimer.h"
-
-#include <boost/date_time/posix_time/posix_time.hpp>
-#include <boost/asio.hpp>
-
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-
-BoostTimer::BoostTimer(int milliseconds, boost::asio::io_service* service) :
-		timeout(milliseconds), timer(*service) {
-}
-
-void BoostTimer::start() {
-	timer.expires_from_now(boost::posix_time::milliseconds(timeout));
-	timer.async_wait(boost::bind(&BoostTimer::handleTimerTick, shared_from_this(), boost::asio::placeholders::error));
-}
-
-void BoostTimer::stop() {
-	timer.cancel();
-}
-
-void BoostTimer::handleTimerTick(const boost::system::error_code& error) {
-	if (error) {
-		assert(error == boost::asio::error::operation_aborted);
-	}
-	else {
-		MainEventLoop::postEvent(boost::bind(boost::ref(onTick)), shared_from_this());
-		timer.expires_from_now(boost::posix_time::milliseconds(timeout));
-		timer.async_wait(boost::bind(&BoostTimer::handleTimerTick, shared_from_this(), boost::asio::placeholders::error));
-	}
-}
-
-}
diff --git a/Swiften/Network/BoostTimer.h b/Swiften/Network/BoostTimer.h
deleted file mode 100644
index 9b27cf9..0000000
--- a/Swiften/Network/BoostTimer.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-
-#include <boost/asio.hpp>
-#include <boost/thread.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "Swiften/EventLoop/EventOwner.h"
-#include "Swiften/Network/Timer.h"
-
-namespace Swift {
-	class BoostTimer : public Timer, public EventOwner, public boost::enable_shared_from_this<BoostTimer> {
-		public:
-			BoostTimer(int milliseconds, boost::asio::io_service* service);
-
-			virtual void start();
-			virtual void stop();
-
-		private:
-			void handleTimerTick(const boost::system::error_code& error);
-
-		private:
-			int timeout;
-			boost::asio::deadline_timer timer;
-	};
-}
diff --git a/Swiften/Network/BoostTimerFactory.cpp b/Swiften/Network/BoostTimerFactory.cpp
deleted file mode 100644
index bbcd83f..0000000
--- a/Swiften/Network/BoostTimerFactory.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "Swiften/Network/BoostTimerFactory.h"
-#include "Swiften/Network/BoostTimer.h"
-
-namespace Swift {
-
-BoostTimerFactory::BoostTimerFactory(boost::asio::io_service* ioService) : ioService(ioService) {
-}
-
-boost::shared_ptr<Timer> BoostTimerFactory::createTimer(int milliseconds) {
-	return boost::shared_ptr<Timer>(new BoostTimer(milliseconds, ioService));
-}
-
-}
diff --git a/Swiften/Network/BoostTimerFactory.h b/Swiften/Network/BoostTimerFactory.h
deleted file mode 100644
index e98c9de..0000000
--- a/Swiften/Network/BoostTimerFactory.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include <boost/asio.hpp>
-
-#include "Swiften/Network/TimerFactory.h"
-#include "Swiften/Network/BoostTimer.h"
-
-namespace Swift {
-	class BoostTimer;
-
-	class BoostTimerFactory : public TimerFactory {
-		public:
-			BoostTimerFactory(boost::asio::io_service*);
-
-			virtual boost::shared_ptr<Timer> createTimer(int milliseconds);
-
-		private:
-			boost::asio::io_service* ioService;
-	};
-}
diff --git a/Swiften/Network/CAresDomainNameResolver.cpp b/Swiften/Network/CAresDomainNameResolver.cpp
deleted file mode 100644
index c0bf8a0..0000000
--- a/Swiften/Network/CAresDomainNameResolver.cpp
+++ /dev/null
@@ -1,162 +0,0 @@
-// TODO: Check the second param of postEvent. We sometimes omit it. Same 
-// goes for the PlatformDomainNameResolver.
-
-#include "Swiften/Network/CAresDomainNameResolver.h"
-#include "Swiften/Base/Platform.h"
-
-#ifndef SWIFTEN_PLATFORM_WINDOWS
-#include <netdb.h>
-#include <arpa/inet.h>
-#endif
-#include <algorithm>
-
-#include "Swiften/Network/DomainNameServiceQuery.h"
-#include "Swiften/Network/DomainNameAddressQuery.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-#include "Swiften/Base/foreach.h"
-
-namespace Swift {
-
-class CAresQuery : public boost::enable_shared_from_this<CAresQuery>, public EventOwner {
-	public:
-		CAresQuery(const String& query, int dnsclass, int type, CAresDomainNameResolver* resolver) : query(query), dnsclass(dnsclass), type(type), resolver(resolver) {
-		}
-
-		virtual ~CAresQuery() {
-		}
-
-		void addToQueue() {
-			resolver->addToQueue(shared_from_this());
-		}
-
-		void doRun(ares_channel* channel) {
-			ares_query(*channel, query.getUTF8Data(), dnsclass, type, &CAresQuery::handleResult, this);
-		}
-
-		static void handleResult(void* arg, int status, int timeouts, unsigned char* buffer, int len) {
-			reinterpret_cast<CAresQuery*>(arg)->handleResult(status, timeouts, buffer, len);
-		}
-
-		virtual void handleResult(int status, int, unsigned char* buffer, int len) = 0;
-	
-	private:
-		String query;
-		int dnsclass;
-		int type;
-		CAresDomainNameResolver* resolver;
-};
-
-class CAresDomainNameServiceQuery : public DomainNameServiceQuery, public CAresQuery {
-	public:
-		CAresDomainNameServiceQuery(const String& service, CAresDomainNameResolver* resolver) : CAresQuery(service, 1, 33, resolver) {
-		}
-
-		virtual void run() {
-			addToQueue();
-		}
-
-		void handleResult(int status, int, unsigned char* buffer, int len) {
-			if (status == ARES_SUCCESS) {
-				std::vector<DomainNameServiceQuery::Result> records;
-				ares_srv_reply* rawRecords;
-				if (ares_parse_srv_reply(buffer, len, &rawRecords) == ARES_SUCCESS) {
-					for( ; rawRecords != NULL; rawRecords = rawRecords->next) {
-						DomainNameServiceQuery::Result record;
-						record.priority = rawRecords->priority;
-						record.weight = rawRecords->weight;
-						record.port = rawRecords->port;
-						record.hostname = String(rawRecords->host);
-						records.push_back(record);
-					}
-				}
-				std::sort(records.begin(), records.end(), ResultPriorityComparator());
-				MainEventLoop::postEvent(boost::bind(boost::ref(onResult), records)); 
-			}
-			else if (status != ARES_EDESTRUCTION) {
-				MainEventLoop::postEvent(boost::bind(boost::ref(onResult), std::vector<DomainNameServiceQuery::Result>()), shared_from_this());
-			}
-		}
-};
-
-class CAresDomainNameAddressQuery : public DomainNameAddressQuery, public CAresQuery {
-	public:
-		CAresDomainNameAddressQuery(const String& host, CAresDomainNameResolver* resolver) : CAresQuery(host, 1, 1, resolver)  {
-		}
-	
-		virtual void run() {
-			addToQueue();
-		}
-
-		void handleResult(int status, int, unsigned char* buffer, int len) {
-			if (status == ARES_SUCCESS) {
-				struct hostent* hosts;
-				if (ares_parse_a_reply(buffer, len, &hosts, NULL, NULL) == ARES_SUCCESS) {
-					// Check whether the different fields are what we expect them to be
-					struct in_addr addr;
-					addr.s_addr = *(unsigned int*)hosts->h_addr_list[0];
-					HostAddress result(inet_ntoa(addr));
-					MainEventLoop::postEvent(boost::bind(boost::ref(onResult), result, boost::optional<DomainNameResolveError>()), boost::dynamic_pointer_cast<CAresDomainNameAddressQuery>(shared_from_this())); 
-					ares_free_hostent(hosts);
-				}
-				else {
-					MainEventLoop::postEvent(boost::bind(boost::ref(onResult), HostAddress(), boost::optional<DomainNameResolveError>(DomainNameResolveError())), shared_from_this());
-				}
-			}
-			else if (status != ARES_EDESTRUCTION) {
-				MainEventLoop::postEvent(boost::bind(boost::ref(onResult), HostAddress(), boost::optional<DomainNameResolveError>(DomainNameResolveError())), shared_from_this());
-			}
-		}
-};
-
-CAresDomainNameResolver::CAresDomainNameResolver() : stopRequested(false) {
-	ares_init(&channel);
-	thread = new boost::thread(boost::bind(&CAresDomainNameResolver::run, this));
-}
-
-CAresDomainNameResolver::~CAresDomainNameResolver() {
-	stopRequested = true;
-	thread->join();
-	ares_destroy(channel);
-}
-
-boost::shared_ptr<DomainNameServiceQuery> CAresDomainNameResolver::createServiceQuery(const String& name) {
-	return boost::shared_ptr<DomainNameServiceQuery>(new CAresDomainNameServiceQuery(getNormalized(name), this));
-}
-
-boost::shared_ptr<DomainNameAddressQuery> CAresDomainNameResolver::createAddressQuery(const String& name) {
-	return boost::shared_ptr<DomainNameAddressQuery>(new CAresDomainNameAddressQuery(getNormalized(name), this));
-}
-
-void CAresDomainNameResolver::addToQueue(boost::shared_ptr<CAresQuery> query) {
-	boost::lock_guard<boost::mutex> lock(pendingQueriesMutex);
-	pendingQueries.push_back(query);
-}
-
-void CAresDomainNameResolver::run() {
-	fd_set readers, writers;
-	struct timeval timeout;
-	timeout.tv_sec = 0;
-	timeout.tv_usec = 100000;
-	while(!stopRequested) {
-		{
-			boost::unique_lock<boost::mutex> lock(pendingQueriesMutex);
-			foreach(const boost::shared_ptr<CAresQuery>& query, pendingQueries) {
-				query->doRun(&channel);
-			}
-			pendingQueries.clear();
-		}
-		FD_ZERO(&readers);
-		FD_ZERO(&writers);
-		int nfds = ares_fds(channel, &readers, &writers);
-		//if (nfds) {
-		//	break;
-		//}
-		struct timeval tv;
-		struct timeval* tvp = ares_timeout(channel, &timeout, &tv);
-		select(nfds, &readers, &writers, NULL, tvp);
-		ares_process(channel, &readers, &writers);
-	}
-}
-
-}
diff --git a/Swiften/Network/CAresDomainNameResolver.h b/Swiften/Network/CAresDomainNameResolver.h
deleted file mode 100644
index 0cdd163..0000000
--- a/Swiften/Network/CAresDomainNameResolver.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#pragma once
-
-#include <ares.h>
-#include <boost/thread.hpp>
-#include <boost/thread/mutex.hpp>
-#include <list>
-
-#include "Swiften/Network/DomainNameResolver.h"
-
-namespace Swift {
-	class CAresQuery;
-
-	class CAresDomainNameResolver : public DomainNameResolver {
-		public:
-			CAresDomainNameResolver();
-			~CAresDomainNameResolver();
-
-			virtual boost::shared_ptr<DomainNameServiceQuery> createServiceQuery(const String& name);
-			virtual boost::shared_ptr<DomainNameAddressQuery> createAddressQuery(const String& name);
-
-		private:
-			friend class CAresQuery;
-
-			void run();
-			void addToQueue(boost::shared_ptr<CAresQuery>);
-
-		private:
-			bool stopRequested;
-			ares_channel channel;
-			boost::thread* thread;
-			boost::mutex pendingQueriesMutex;
-			std::list< boost::shared_ptr<CAresQuery> > pendingQueries;
-	};
-}
diff --git a/Swiften/Network/Connection.h b/Swiften/Network/Connection.h
deleted file mode 100644
index a995774..0000000
--- a/Swiften/Network/Connection.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#pragma once
-
-#include <boost/signals.hpp>
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class HostAddressPort;
-
-	class Connection {
-		public:
-			enum Error {
-				ReadError,
-				WriteError
-			};
-
-			Connection() {}
-			virtual ~Connection() {}
-
-			virtual void listen() = 0;
-			virtual void connect(const HostAddressPort& address) = 0;
-			virtual void disconnect() = 0;
-			virtual void write(const ByteArray& data) = 0;
-
-		public:
-			boost::signal<void (bool /* error */)> onConnectFinished;
-			boost::signal<void (const boost::optional<Error>&)> onDisconnected;
-			boost::signal<void (const ByteArray&)> onDataRead;
-	};
-}
diff --git a/Swiften/Network/ConnectionFactory.cpp b/Swiften/Network/ConnectionFactory.cpp
deleted file mode 100644
index 686a165..0000000
--- a/Swiften/Network/ConnectionFactory.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Network/ConnectionFactory.h"
-
-namespace Swift {
-
-ConnectionFactory::~ConnectionFactory() {
-}
-
-}
diff --git a/Swiften/Network/ConnectionFactory.h b/Swiften/Network/ConnectionFactory.h
deleted file mode 100644
index e78f6ab..0000000
--- a/Swiften/Network/ConnectionFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-namespace Swift {
-	class Connection;
-
-	class ConnectionFactory {
-		public:
-			virtual ~ConnectionFactory();
-
-			virtual boost::shared_ptr<Connection> createConnection() = 0;
-	};
-}
diff --git a/Swiften/Network/ConnectionServer.cpp b/Swiften/Network/ConnectionServer.cpp
deleted file mode 100644
index 7f63fee..0000000
--- a/Swiften/Network/ConnectionServer.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Network/ConnectionServer.h"
-
-namespace Swift {
-
-ConnectionServer::~ConnectionServer() {
-}
-
-}
diff --git a/Swiften/Network/ConnectionServer.h b/Swiften/Network/ConnectionServer.h
deleted file mode 100644
index 539367d..0000000
--- a/Swiften/Network/ConnectionServer.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/signal.hpp>
-
-#include "Swiften/Network/Connection.h"
-
-namespace Swift {
-	class ConnectionServer {
-		public:
-			virtual ~ConnectionServer();
-
-			boost::signal<void (boost::shared_ptr<Connection>)> onNewConnection;
-	};
-}
diff --git a/Swiften/Network/Connector.cpp b/Swiften/Network/Connector.cpp
deleted file mode 100644
index d372bf2..0000000
--- a/Swiften/Network/Connector.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-#include "Swiften/Network/Connector.h"
-
-#include <boost/bind.hpp>
-#include <iostream>
-
-#include "Swiften/Network/ConnectionFactory.h"
-#include "Swiften/Network/DomainNameResolver.h"
-#include "Swiften/Network/DomainNameAddressQuery.h"
-#include "Swiften/Network/TimerFactory.h"
-
-namespace Swift {
-
-Connector::Connector(const String& hostname, DomainNameResolver* resolver, ConnectionFactory* connectionFactory, TimerFactory* timerFactory) : hostname(hostname), resolver(resolver), connectionFactory(connectionFactory), timerFactory(timerFactory), timeoutMilliseconds(0), queriedAllHosts(true) {
-}
-
-void Connector::setTimeoutMilliseconds(int milliseconds) {
-	timeoutMilliseconds = milliseconds;
-}
-
-void Connector::start() {
-	//std::cout << "Connector::start()" << std::endl;
-	assert(!currentConnection);
-	assert(!serviceQuery);
-	assert(!timer);
-	queriedAllHosts = false;
-	serviceQuery = resolver->createServiceQuery("_xmpp-client._tcp." + hostname);
-	serviceQuery->onResult.connect(boost::bind(&Connector::handleServiceQueryResult, this, _1));
-	if (timeoutMilliseconds > 0) {
-		timer = timerFactory->createTimer(timeoutMilliseconds);
-		timer->onTick.connect(boost::bind(&Connector::handleTimeout, this));
-		timer->start();
-	}
-	serviceQuery->run();
-}
-
-void Connector::queryAddress(const String& hostname) {
-	assert(!addressQuery);
-	addressQuery = resolver->createAddressQuery(hostname);
-	addressQuery->onResult.connect(boost::bind(&Connector::handleAddressQueryResult, this, _1, _2));
-	addressQuery->run();
-}
-
-void Connector::handleServiceQueryResult(const std::vector<DomainNameServiceQuery::Result>& result) {
-	//std::cout << "Received SRV results" << std::endl;
-	serviceQueryResults = std::deque<DomainNameServiceQuery::Result>(result.begin(), result.end());
-	serviceQuery.reset();
-	tryNextHostname();
-}
-
-void Connector::tryNextHostname() {
-	if (queriedAllHosts) {
-		//std::cout << "Connector::tryNextHostName(): Queried all hosts. Error." << std::endl;
-		finish(boost::shared_ptr<Connection>());
-	}
-	else if (serviceQueryResults.empty()) {
-		//std::cout << "Connector::tryNextHostName(): Falling back on A resolution" << std::endl;
-		// Fall back on simple address resolving
-		queriedAllHosts = true;
-		queryAddress(hostname);
-	}
-	else {
-		//std::cout << "Connector::tryNextHostName(): Querying next address" << std::endl;
-		queryAddress(serviceQueryResults.front().hostname);
-	}
-}
-
-void Connector::handleAddressQueryResult(const HostAddress& address, boost::optional<DomainNameResolveError> error) {
-	//std::cout << "Connector::handleAddressQueryResult(): Start" << std::endl;
-	addressQuery.reset();
-	if (!serviceQueryResults.empty()) {
-		DomainNameServiceQuery::Result serviceQueryResult = serviceQueryResults.front();
-		serviceQueryResults.pop_front();
-		if (error) {
-			//std::cout << "Connector::handleAddressQueryResult(): A lookup for SRV host " << serviceQueryResult.hostname << " failed." << std::endl;
-			tryNextHostname();
-		}
-		else {
-			//std::cout << "Connector::handleAddressQueryResult(): A lookup for SRV host " << serviceQueryResult.hostname << " succeeded: " << address.toString() << std::endl;
-			tryConnect(HostAddressPort(address, serviceQueryResult.port));
-		}
-	}
-	else if (error) {
-		//std::cout << "Connector::handleAddressQueryResult(): Fallback address query failed. Giving up" << std::endl;
-		// The fallback address query failed
-		assert(queriedAllHosts);
-		finish(boost::shared_ptr<Connection>());
-	}
-	else {
-		//std::cout << "Connector::handleAddressQueryResult(): Fallback address query succeeded: " << address.toString() << std::endl;
-		// The fallback query succeeded
-		tryConnect(HostAddressPort(address, 5222));
-	}
-}
-
-void Connector::tryConnect(const HostAddressPort& target) {
-	assert(!currentConnection);
-	//std::cout << "Connector::tryConnect() " << target.getAddress().toString() << " " << target.getPort() << std::endl;
-	currentConnection = connectionFactory->createConnection();
-	currentConnection->onConnectFinished.connect(boost::bind(&Connector::handleConnectionConnectFinished, this, _1));
-	currentConnection->connect(target);
-}
-
-void Connector::handleConnectionConnectFinished(bool error) {
-	//std::cout << "Connector::handleConnectionConnectFinished() " << error << std::endl;
-	if (error) {
-		currentConnection.reset();
-		tryNextHostname();
-	}
-	else {
-		finish(currentConnection);
-	}
-}
-
-void Connector::finish(boost::shared_ptr<Connection> connection) {
-	if (timer) {
-		timer->stop();
-		timer.reset();
-	}
-	onConnectFinished(connection);
-}
-
-void Connector::handleTimeout() {
-	finish(boost::shared_ptr<Connection>());
-}
-
-};
diff --git a/Swiften/Network/Connector.h b/Swiften/Network/Connector.h
deleted file mode 100644
index 507f085..0000000
--- a/Swiften/Network/Connector.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#pragma once
-
-#include <deque>
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Network/DomainNameServiceQuery.h"
-#include "Swiften/Network/Connection.h"
-#include "Swiften/Network/Timer.h"
-#include "Swiften/Network/HostAddressPort.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Network/DomainNameResolveError.h"
-
-namespace Swift {
-	class DomainNameAddressQuery;
-	class DomainNameResolver;
-	class ConnectionFactory;
-	class TimerFactory;
-
-	class Connector : public boost::bsignals::trackable {
-		public:
-			Connector(const String& hostname, DomainNameResolver*, ConnectionFactory*, TimerFactory*);
-
-			void setTimeoutMilliseconds(int milliseconds);
-			void start();
-
-			boost::signal<void (boost::shared_ptr<Connection>)> onConnectFinished;
-
-		private:
-			void handleServiceQueryResult(const std::vector<DomainNameServiceQuery::Result>& result);
-			void handleAddressQueryResult(const HostAddress& address, boost::optional<DomainNameResolveError> error);
-			void queryAddress(const String& hostname);
-
-			void tryNextHostname();
-			void tryConnect(const HostAddressPort& target);
-
-			void handleConnectionConnectFinished(bool error);
-			void finish(boost::shared_ptr<Connection>);
-			void handleTimeout();
-
-		private:
-			String hostname;
-			DomainNameResolver* resolver;
-			ConnectionFactory* connectionFactory;
-			TimerFactory* timerFactory;
-			int timeoutMilliseconds;
-			boost::shared_ptr<Timer> timer;
-			boost::shared_ptr<DomainNameServiceQuery> serviceQuery;
-			std::deque<DomainNameServiceQuery::Result> serviceQueryResults;
-			boost::shared_ptr<DomainNameAddressQuery> addressQuery;
-			bool queriedAllHosts;
-			boost::shared_ptr<Connection> currentConnection;
-	};
-};
diff --git a/Swiften/Network/DomainNameAddressQuery.cpp b/Swiften/Network/DomainNameAddressQuery.cpp
deleted file mode 100644
index 5e77cd7..0000000
--- a/Swiften/Network/DomainNameAddressQuery.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Network/DomainNameAddressQuery.h"
-
-namespace Swift {
-
-DomainNameAddressQuery::~DomainNameAddressQuery() {
-}
-
-}
diff --git a/Swiften/Network/DomainNameAddressQuery.h b/Swiften/Network/DomainNameAddressQuery.h
deleted file mode 100644
index 66a79db..0000000
--- a/Swiften/Network/DomainNameAddressQuery.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#pragma once
-
-#include <boost/signals.hpp>
-#include <boost/optional.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Network/DomainNameResolveError.h"
-#include "Swiften/Network/HostAddress.h"
-
-namespace Swift {
-	class DomainNameAddressQuery {
-		public:
-			virtual ~DomainNameAddressQuery();
-
-			virtual void run() = 0;
-
-			boost::signal<void (const HostAddress&, boost::optional<DomainNameResolveError>)> onResult;
-	};
-}
diff --git a/Swiften/Network/DomainNameResolveError.h b/Swiften/Network/DomainNameResolveError.h
deleted file mode 100644
index 860ea23..0000000
--- a/Swiften/Network/DomainNameResolveError.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/Error.h"
-
-namespace Swift {
-	class DomainNameResolveError : public Error {
-		public:
-			DomainNameResolveError() {}
-	};
-}
diff --git a/Swiften/Network/DomainNameResolver.cpp b/Swiften/Network/DomainNameResolver.cpp
deleted file mode 100644
index 63ed881..0000000
--- a/Swiften/Network/DomainNameResolver.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "Swiften/Network/DomainNameResolver.h"
-
-#include <idna.h>
-
-namespace Swift {
-
-DomainNameResolver::~DomainNameResolver() {
-}
-
-String DomainNameResolver::getNormalized(const String& domain) {
-	char* output;
-	if (idna_to_ascii_8z(domain.getUTF8Data(), &output, 0) == IDNA_SUCCESS) {
-		String result(output);
-		free(output);
-		return result;
-	}
-	else {
-		return domain;
-	}
-}
-
-}
diff --git a/Swiften/Network/DomainNameResolver.h b/Swiften/Network/DomainNameResolver.h
deleted file mode 100644
index d3dab26..0000000
--- a/Swiften/Network/DomainNameResolver.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class DomainNameServiceQuery;
-	class DomainNameAddressQuery;
-	class String;
-
-	class DomainNameResolver {
-		public:
-			virtual ~DomainNameResolver();
-
-			virtual boost::shared_ptr<DomainNameServiceQuery> createServiceQuery(const String& name) = 0;
-			virtual boost::shared_ptr<DomainNameAddressQuery> createAddressQuery(const String& name) = 0;
-
-		protected:
-			static String getNormalized(const String& domain);
-	};
-}
diff --git a/Swiften/Network/DomainNameServiceQuery.cpp b/Swiften/Network/DomainNameServiceQuery.cpp
deleted file mode 100644
index 7dfd353..0000000
--- a/Swiften/Network/DomainNameServiceQuery.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Network/DomainNameServiceQuery.h"
-
-namespace Swift {
-
-DomainNameServiceQuery::~DomainNameServiceQuery() {
-}
-
-}
diff --git a/Swiften/Network/DomainNameServiceQuery.h b/Swiften/Network/DomainNameServiceQuery.h
deleted file mode 100644
index 57e48d3..0000000
--- a/Swiften/Network/DomainNameServiceQuery.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#pragma once
-
-#include <boost/signals.hpp>
-#include <boost/optional.hpp>
-#include <vector>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Network/DomainNameResolveError.h"
-
-namespace Swift {
-	class DomainNameServiceQuery {
-		public:
-			struct Result {
-				Result(const String& hostname = "", int port = -1, int priority = -1, int weight = -1) : hostname(hostname), port(port), priority(priority), weight(weight) {}
-				String hostname;
-				int port;
-				int priority;
-				int weight;
-			};
-
-			struct ResultPriorityComparator {
-				bool operator()(const DomainNameServiceQuery::Result& a, const DomainNameServiceQuery::Result& b) const {
-					return a.priority < b.priority;
-				}
-			};
-
-			virtual ~DomainNameServiceQuery();
-
-			virtual void run() = 0;
-
-			boost::signal<void (const std::vector<Result>&)> onResult;
-	};
-}
diff --git a/Swiften/Network/DummyConnection.h b/Swiften/Network/DummyConnection.h
deleted file mode 100644
index 11281b3..0000000
--- a/Swiften/Network/DummyConnection.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#pragma once
-
-#include <cassert>
-#include <boost/bind.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "Swiften/Network/Connection.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-#include "Swiften/EventLoop/EventOwner.h"
-
-namespace Swift {
-	class DummyConnection : 
-			public Connection, 
-			public EventOwner,
-			public boost::enable_shared_from_this<DummyConnection> {
-
-		void listen() {
-			assert(false);
-		}
-
-		void connect(const HostAddressPort&) {
-			assert(false);
-		}
-
-		void disconnect() {
-			assert(false);
-		}
-
-		void write(const ByteArray& data) {
-			onDataWritten(data);
-		}
-
-		void receive(const ByteArray& data) {
-			MainEventLoop::postEvent(boost::bind(
-					boost::ref(onDataRead), ByteArray(data)), shared_from_this());
-		}
-
-		boost::signal<void (const ByteArray&)> onDataWritten;
-	};
-}
diff --git a/Swiften/Network/DummyTimerFactory.cpp b/Swiften/Network/DummyTimerFactory.cpp
deleted file mode 100644
index 7626584..0000000
--- a/Swiften/Network/DummyTimerFactory.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-#include "Swiften/Network/DummyTimerFactory.h"
-
-#include <algorithm>
-
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Network/Timer.h"
-
-namespace Swift {
-
-class DummyTimerFactory::DummyTimer : public Timer {
-	public:
-		DummyTimer(int timeout) : timeout(timeout), isRunning(false) {
-		}
-
-		virtual void start() {
-			isRunning = true;
-		}
-
-		virtual void stop() {
-			isRunning = false;
-		}
-	
-		int timeout;
-		bool isRunning;
-};
-
-
-DummyTimerFactory::DummyTimerFactory() : currentTime(0) {
-}
-
-boost::shared_ptr<Timer> DummyTimerFactory::createTimer(int milliseconds) {
-	boost::shared_ptr<DummyTimer> timer(new DummyTimer(milliseconds));
-	timers.push_back(timer);
-	return timer;
-}
-
-static bool hasZeroTimeout(boost::shared_ptr<DummyTimerFactory::DummyTimer> timer) {
-	return timer->timeout == 0;
-}
-
-void DummyTimerFactory::setTime(int time) {
-	assert(time > currentTime);
-	int increment = time - currentTime;
-	std::vector< boost::shared_ptr<DummyTimer> > notifyTimers(timers.begin(), timers.end());
-	foreach(boost::shared_ptr<DummyTimer> timer, notifyTimers) {
-		if (increment >= timer->timeout) {
-			if (timer->isRunning) {
-				timer->onTick();
-			}
-			timer->timeout = 0;
-		}
-		else {
-			timer->timeout -= increment;
-		}
-	}
-	timers.erase(std::remove_if(timers.begin(), timers.end(), hasZeroTimeout), timers.end());
-	currentTime = time;
-}
-
-}
diff --git a/Swiften/Network/DummyTimerFactory.h b/Swiften/Network/DummyTimerFactory.h
deleted file mode 100644
index feac029..0000000
--- a/Swiften/Network/DummyTimerFactory.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#pragma once
-
-#include <list>
-
-#include "Swiften/Network/TimerFactory.h"
-
-namespace Swift {
-	class DummyTimerFactory : public TimerFactory {
-		public:
-			class DummyTimer;
-
-			DummyTimerFactory();
-
-			virtual boost::shared_ptr<Timer> createTimer(int milliseconds);
-			void setTime(int time);
-
-		private:
-			friend class DummyTimer;
-			int currentTime;
-			std::list<boost::shared_ptr<DummyTimer> > timers;
-	};
-}
diff --git a/Swiften/Network/FakeConnection.h b/Swiften/Network/FakeConnection.h
deleted file mode 100644
index 92a03c3..0000000
--- a/Swiften/Network/FakeConnection.h
+++ /dev/null
@@ -1,88 +0,0 @@
-#pragma once
-
-#include <boost/optional.hpp>
-#include <boost/bind.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <vector>
-
-#include "Swiften/Network/Connection.h"
-#include "Swiften/Network/HostAddressPort.h"
-#include "Swiften/EventLoop/EventOwner.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-	class FakeConnection : 
-			public Connection, 
-			public EventOwner,
-			public boost::enable_shared_from_this<FakeConnection> {
-		public:
-			enum State {
-				Initial,
-				Connecting,
-				Connected,
-				Disconnected,
-				DisconnectedWithError
-			};
-
-			FakeConnection() : state(Initial), delayConnect(false) {}
-
-			virtual void listen() {
-				assert(false);
-			}
-
-			void setError(const Error& e) {
-				error = boost::optional<Error>(e);
-				state = DisconnectedWithError;
-				if (connectedTo) {
-					MainEventLoop::postEvent(
-							boost::bind(boost::ref(onDisconnected), error),
-							shared_from_this());
-				}
-			}
-
-			virtual void connect(const HostAddressPort& address) {
-				if (delayConnect) {
-					state = Connecting;
-				}
-				else {
-					if (!error) {
-						connectedTo = address;
-						state = Connected;
-					}
-					else {
-						state = DisconnectedWithError;
-					}
-					MainEventLoop::postEvent(
-							boost::bind(boost::ref(onConnectFinished), error),
-							shared_from_this());
-				}
-			}
-
-			virtual void disconnect() {
-				if (!error) {
-					state = Disconnected;
-				}
-				else {
-					state = DisconnectedWithError;
-				}
-				connectedTo.reset();
-				MainEventLoop::postEvent(
-						boost::bind(boost::ref(onDisconnected), error),
-						shared_from_this());
-			}
-
-			virtual void write(const ByteArray& data) {
-				dataWritten.push_back(data);
-			}
-
-			void setDelayConnect() {
-				delayConnect = true;
-			}
-
-			boost::optional<HostAddressPort> connectedTo;
-			std::vector<ByteArray> dataWritten;
-			boost::optional<Error> error;
-			State state;
-			bool delayConnect;
-	};
-}
diff --git a/Swiften/Network/HostAddress.cpp b/Swiften/Network/HostAddress.cpp
deleted file mode 100644
index 8ac66bb..0000000
--- a/Swiften/Network/HostAddress.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "Swiften/Network/HostAddress.h"
-
-#include <boost/numeric/conversion/cast.hpp>
-#include <boost/lexical_cast.hpp>
-#include <cassert>
-#include <sstream>
-#include <iomanip>
-
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-
-HostAddress::HostAddress() {
-	for (int i = 0; i < 4; ++i) {
-		address_.push_back(0);
-	}
-}
-
-HostAddress::HostAddress(const String& address) {
-	std::vector<String> components = address.split('.');
-	assert(components.size() == 4);
-	foreach(const String& component, components) {
-		address_.push_back(boost::lexical_cast<int>(component.getUTF8String()));
-	}
-}
-
-HostAddress::HostAddress(const unsigned char* address, int length) {
-	assert(length == 4 || length == 16);
-	address_.reserve(length);
-	for (int i = 0; i < length; ++i) {
-		address_.push_back(address[i]);
-	}
-}
-
-std::string HostAddress::toString() const {
-	if (address_.size() == 4) {
-		std::ostringstream result;
-		for (size_t i = 0; i < address_.size() - 1; ++i) {
-			result << boost::numeric_cast<unsigned int>(address_[i]) << ".";
-		}
-		result << boost::numeric_cast<unsigned int>(address_[address_.size()	- 1]);
-		return result.str();
-	}
-	else if (address_.size() == 16) {
-		std::ostringstream result;
-		result << std::hex;
-		result.fill('0');
-		for (size_t i = 0; i < (address_.size() / 2) - 1; ++i) {
-			result << std::setw(2) << boost::numeric_cast<unsigned int>(address_[2*i]) << std::setw(2) << boost::numeric_cast<unsigned int>(address_[(2*i)+1]) << ":";
-		}
-		result << std::setw(2) << boost::numeric_cast<unsigned int>(address_[address_.size() - 2]) << std::setw(2) << boost::numeric_cast<unsigned int>(address_[address_.size() - 1]);
-		return result.str();
-	}
-	else {
-		assert(false);
-		return "";
-	}
-}
-
-}
diff --git a/Swiften/Network/HostAddress.h b/Swiften/Network/HostAddress.h
deleted file mode 100644
index 11f8a2b..0000000
--- a/Swiften/Network/HostAddress.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#pragma once
-
-#include <string>
-#include <vector>
-
-namespace Swift {
-	class String;
-
-	class HostAddress {
-		public:
-			HostAddress();
-			HostAddress(const String&);
-			HostAddress(const unsigned char* address, int length);
-
-			const std::vector<unsigned char>& getRawAddress() const {
-				return address_;
-			}
-
-			std::string toString() const;
-
-			bool operator==(const HostAddress& o) const {
-				return address_ == o.address_;
-			}
-
-		private:
-			std::vector<unsigned char> address_;
-	};
-}
diff --git a/Swiften/Network/HostAddressPort.h b/Swiften/Network/HostAddressPort.h
deleted file mode 100644
index d632058..0000000
--- a/Swiften/Network/HostAddressPort.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef SWIFTEN_HostAddressPort_H
-#define SWIFTEN_HostAddressPort_H
-
-#include "Swiften/Network/HostAddress.h"
-
-namespace Swift {
-	class HostAddressPort {
-		public:
-			HostAddressPort(const HostAddress& address, int port) : address_(address), port_(port) {
-			}
-
-			const HostAddress& getAddress() const {
-				return address_;
-			}
-
-			int getPort() const {
-				return port_;
-			}
-
-			bool operator==(const HostAddressPort& o) const {
-				return address_ == o.address_ && port_ == o.port_;
-			}
-
-		private:
-			HostAddress address_;
-			int port_;
-	};
-}
-
-#endif
diff --git a/Swiften/Network/MainBoostIOServiceThread.cpp b/Swiften/Network/MainBoostIOServiceThread.cpp
deleted file mode 100644
index 672bb07..0000000
--- a/Swiften/Network/MainBoostIOServiceThread.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "Swiften/Network/MainBoostIOServiceThread.h"
-
-#include "Swiften/Network/BoostIOServiceThread.h"
-
-namespace Swift {
-
-BoostIOServiceThread& MainBoostIOServiceThread::getInstance() {
-	static BoostIOServiceThread instance;
-	return instance;
-}
-
-}
diff --git a/Swiften/Network/MainBoostIOServiceThread.h b/Swiften/Network/MainBoostIOServiceThread.h
deleted file mode 100644
index cca7c2e..0000000
--- a/Swiften/Network/MainBoostIOServiceThread.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#pragma once
-
-namespace Swift {
-	class BoostIOServiceThread;
-
-	class MainBoostIOServiceThread {
-		public:
-			static BoostIOServiceThread& getInstance();
-	};
-}
diff --git a/Swiften/Network/PlatformDomainNameResolver.cpp b/Swiften/Network/PlatformDomainNameResolver.cpp
deleted file mode 100644
index 7b8a6d5..0000000
--- a/Swiften/Network/PlatformDomainNameResolver.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-#include "Swiften/Network/PlatformDomainNameResolver.h"
-
-// Putting this early on, because some system types conflict with thread
-#include "Swiften/Network/PlatformDomainNameServiceQuery.h"
-
-#include <string>
-#include <vector>
-#include <boost/asio.hpp>
-#include <boost/bind.hpp>
-#include <boost/thread.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <algorithm>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Network/HostAddress.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-#include "Swiften/Network/HostAddressPort.h"
-#include "Swiften/Network/DomainNameAddressQuery.h"
-
-using namespace Swift;
-
-namespace {
-	struct AddressQuery : public DomainNameAddressQuery, public boost::enable_shared_from_this<AddressQuery>, public EventOwner {
-		AddressQuery(const String& host) : hostname(host), thread(NULL), safeToJoin(false) {}
-
-		~AddressQuery() {
-			if (safeToJoin) {
-				thread->join();
-			}
-			else {
-				// FIXME: UGLYYYYY
-			}
-			delete thread;
-		}
-
-		void run() {
-			safeToJoin = false;
-			thread = new boost::thread(boost::bind(&AddressQuery::doRun, shared_from_this()));
-		}
-		
-		void doRun() {
-			//std::cout << "PlatformDomainNameResolver::doRun()" << std::endl;
-			boost::asio::ip::tcp::resolver resolver(ioService);
-			boost::asio::ip::tcp::resolver::query query(hostname.getUTF8String(), "5222");
-			try {
-				//std::cout << "PlatformDomainNameResolver::doRun(): Resolving" << std::endl;
-				boost::asio::ip::tcp::resolver::iterator endpointIterator = resolver.resolve(query);
-				//std::cout << "PlatformDomainNameResolver::doRun(): Resolved" << std::endl;
-				if (endpointIterator == boost::asio::ip::tcp::resolver::iterator()) {
-					//std::cout << "PlatformDomainNameResolver::doRun(): Error 1" << std::endl;
-					emitError();
-				}
-				else {
-					boost::asio::ip::address address = (*endpointIterator).endpoint().address();
-					HostAddress result = (address.is_v4() ? HostAddress(&address.to_v4().to_bytes()[0], 4) : HostAddress(&address.to_v6().to_bytes()[0], 16));
-					//std::cout << "PlatformDomainNameResolver::doRun(): Success" << std::endl;
-					MainEventLoop::postEvent(
-							boost::bind(boost::ref(onResult), result, boost::optional<DomainNameResolveError>()), 
-							shared_from_this());
-				}
-			}
-			catch (...) {
-				//std::cout << "PlatformDomainNameResolver::doRun(): Error 2" << std::endl;
-				emitError();
-			}
-			safeToJoin = true;
-		}
-
-		void emitError() {
-			MainEventLoop::postEvent(boost::bind(boost::ref(onResult), HostAddress(), boost::optional<DomainNameResolveError>(DomainNameResolveError())), shared_from_this());
-		}
-
-		boost::asio::io_service ioService;
-		String hostname;
-		boost::thread* thread;
-		bool safeToJoin;
-	};
-
-}
-
-namespace Swift {
-
-PlatformDomainNameResolver::PlatformDomainNameResolver() {
-}
-
-boost::shared_ptr<DomainNameServiceQuery> PlatformDomainNameResolver::createServiceQuery(const String& name) {
-	return boost::shared_ptr<DomainNameServiceQuery>(new PlatformDomainNameServiceQuery(getNormalized(name)));
-}
-
-boost::shared_ptr<DomainNameAddressQuery> PlatformDomainNameResolver::createAddressQuery(const String& name) {
-	return boost::shared_ptr<DomainNameAddressQuery>(new AddressQuery(getNormalized(name)));
-}
-
-}
diff --git a/Swiften/Network/PlatformDomainNameResolver.h b/Swiften/Network/PlatformDomainNameResolver.h
deleted file mode 100644
index 4617b15..0000000
--- a/Swiften/Network/PlatformDomainNameResolver.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#include "Swiften/Network/DomainNameResolver.h"
-
-namespace Swift {
-	class String;
-
-	class PlatformDomainNameResolver : public DomainNameResolver {
-		public:
-			PlatformDomainNameResolver();
-
-			virtual boost::shared_ptr<DomainNameServiceQuery> createServiceQuery(const String& name);
-			virtual boost::shared_ptr<DomainNameAddressQuery> createAddressQuery(const String& name);
-	};
-}
diff --git a/Swiften/Network/PlatformDomainNameServiceQuery.cpp b/Swiften/Network/PlatformDomainNameServiceQuery.cpp
deleted file mode 100644
index bde851b..0000000
--- a/Swiften/Network/PlatformDomainNameServiceQuery.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-#include "Swiften/Network/PlatformDomainNameServiceQuery.h"
-
-#include "Swiften/Base/Platform.h"
-#include <stdlib.h>
-#ifdef SWIFTEN_PLATFORM_WINDOWS
-#undef UNICODE
-#include <windows.h>
-#include <windns.h>
-#ifndef DNS_TYPE_SRV
-#define DNS_TYPE_SRV 33
-#endif
-#else
-#include <arpa/nameser.h>
-#include <arpa/nameser_compat.h>
-#include <resolv.h>
-#endif
-#include <boost/bind.hpp>
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-#include "Swiften/Base/foreach.h"
-
-using namespace Swift;
-
-namespace Swift {
-
-PlatformDomainNameServiceQuery::PlatformDomainNameServiceQuery(const String& service) : thread(NULL), service(service), safeToJoin(true) {
-}
-
-PlatformDomainNameServiceQuery::~PlatformDomainNameServiceQuery() {
-	if (safeToJoin) {
-		thread->join();
-	}
-	else {
-		// FIXME: UGLYYYYY
-	}
-	delete thread;
-}
-
-void PlatformDomainNameServiceQuery::run() {
-	safeToJoin = false;
-	thread = new boost::thread(boost::bind(&PlatformDomainNameServiceQuery::doRun, shared_from_this()));
-}
-
-void PlatformDomainNameServiceQuery::doRun() {
-	std::vector<DomainNameServiceQuery::Result> records;
-
-#if defined(SWIFTEN_PLATFORM_WINDOWS)
-	DNS_RECORD* responses;
-	// FIXME: This conversion doesn't work if unicode is deffed above
-	if (DnsQuery(service.getUTF8Data(), DNS_TYPE_SRV, DNS_QUERY_STANDARD, NULL, &responses, NULL) != ERROR_SUCCESS) {
-		emitError();
-		return;
-	}
-
-	DNS_RECORD* currentEntry = responses;
-	while (currentEntry) {
-		if (currentEntry->wType == DNS_TYPE_SRV) {
-			DomainNameServiceQuery::Result record;
-			record.priority = currentEntry->Data.SRV.wPriority;
-			record.weight = currentEntry->Data.SRV.wWeight;
-			record.port = currentEntry->Data.SRV.wPort;
-				
-			// The pNameTarget is actually a PCWSTR, so I would have expected this 
-			// conversion to not work at all, but it does.
-			// Actually, it doesn't. Fix this and remove explicit cast
-			// Remove unicode undef above as well
-			record.hostname = String((const char*) currentEntry->Data.SRV.pNameTarget);
-			records.push_back(record);
-		}
-		currentEntry = currentEntry->pNext;
-	}
-	DnsRecordListFree(responses, DnsFreeRecordList);
-
-#else
-	// Make sure we reinitialize the domain list every time
-	res_init();
-
-	//std::cout << "SRV: Querying " << service << std::endl;
-	ByteArray response;
-	response.resize(NS_PACKETSZ);
-	int responseLength = res_query(const_cast<char*>(service.getUTF8Data()), ns_c_in, ns_t_srv, reinterpret_cast<u_char*>(response.getData()), response.getSize());
-	//std::cout << "res_query done " << (responseLength != -1) << std::endl;
-	if (responseLength == -1) {
-		emitError();
-		return;
-	}
-
-	// Parse header
-	HEADER* header = reinterpret_cast<HEADER*>(response.getData());
-	unsigned char* messageStart = reinterpret_cast<unsigned char*>(response.getData());
-	unsigned char* messageEnd = messageStart + responseLength;
-	unsigned char* currentEntry = messageStart + NS_HFIXEDSZ;
-
-	// Skip over the queries
-	int queriesCount = ntohs(header->qdcount);
-	while (queriesCount > 0) {
-		int entryLength = dn_skipname(currentEntry, messageEnd);
-		if (entryLength < 0) {
-			emitError();
-			return;
-		}
-		currentEntry += entryLength + NS_QFIXEDSZ;
-		queriesCount--;
-	}
-
-	// Process the SRV answers
-	int answersCount = ntohs(header->ancount);
-	while (answersCount > 0) {
-		DomainNameServiceQuery::Result record;
-
-		int entryLength = dn_skipname(currentEntry, messageEnd);
-		currentEntry += entryLength;
-		currentEntry += NS_RRFIXEDSZ;
-
-		// Priority
-		if (currentEntry + 2 >= messageEnd) {
-			emitError();
-			return;
-		}
-		record.priority = ns_get16(currentEntry);
-		currentEntry += 2;
-
-		// Weight
-		if (currentEntry + 2 >= messageEnd) {
-			emitError();
-			return;
-		}
-		record.weight = ns_get16(currentEntry);
-		currentEntry += 2;
-
-		// Port
-		if (currentEntry + 2 >= messageEnd) {
-			emitError();
-			return;
-		}
-		record.port = ns_get16(currentEntry);
-		currentEntry += 2; 
-
-		// Hostname
-		if (currentEntry >= messageEnd) {
-			emitError();
-			return;
-		}
-		ByteArray entry;
-		entry.resize(NS_MAXDNAME);
-		entryLength = dn_expand(messageStart, messageEnd, currentEntry, entry.getData(), entry.getSize());
-		if (entryLength < 0) {
-			emitError();
-			return;
-		}
-		record.hostname = String(entry.getData());
-		records.push_back(record);
-		currentEntry += entryLength;
-		answersCount--;
-	}
-#endif
-
-	safeToJoin = true;
-	std::sort(records.begin(), records.end(), ResultPriorityComparator());
-	//std::cout << "Sending out " << records.size() << " SRV results " << std::endl;
-	MainEventLoop::postEvent(boost::bind(boost::ref(onResult), records)); 
-}
-
-void PlatformDomainNameServiceQuery::emitError() {
-	safeToJoin = true;
-	MainEventLoop::postEvent(boost::bind(boost::ref(onResult), std::vector<DomainNameServiceQuery::Result>()), shared_from_this());
-}
-
-}
diff --git a/Swiften/Network/PlatformDomainNameServiceQuery.h b/Swiften/Network/PlatformDomainNameServiceQuery.h
deleted file mode 100644
index 753e2c6..0000000
--- a/Swiften/Network/PlatformDomainNameServiceQuery.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#pragma once
-
-#include <boost/thread.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "Swiften/Network/DomainNameServiceQuery.h"
-#include "Swiften/EventLoop/EventOwner.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class PlatformDomainNameServiceQuery : public DomainNameServiceQuery, public boost::enable_shared_from_this<PlatformDomainNameServiceQuery>, public EventOwner {
-		public:
-			PlatformDomainNameServiceQuery(const String& service);
-			~PlatformDomainNameServiceQuery();
-
-			virtual void run();
-
-		private:
-			void doRun();
-			void emitError();
-
-		private:
-			boost::thread* thread;
-			String service;
-			bool safeToJoin;
-	};
-}
diff --git a/Swiften/Network/SConscript b/Swiften/Network/SConscript
deleted file mode 100644
index 937ab0c..0000000
--- a/Swiften/Network/SConscript
+++ /dev/null
@@ -1,34 +0,0 @@
-Import("swiften_env")
-
-myenv = swiften_env.Clone()
-myenv.MergeFlags(myenv["LIBIDN_FLAGS"])
-if myenv["target"] == "native":
-   myenv.MergeFlags(myenv["CARES_FLAGS"])
-
-sourceList = [
-			"BoostConnection.cpp",
-			"BoostConnectionFactory.cpp",
-			"BoostConnectionServer.cpp",
-			"MainBoostIOServiceThread.cpp",
-			"BoostIOServiceThread.cpp",
-			"ConnectionFactory.cpp",
-			"ConnectionServer.cpp",
- 			"Connector.cpp",
-			"TimerFactory.cpp",
-			"DummyTimerFactory.cpp",
-			"BoostTimerFactory.cpp",
-			"DomainNameResolver.cpp",
-			"DomainNameAddressQuery.cpp",
-			"DomainNameServiceQuery.cpp",
-			"PlatformDomainNameResolver.cpp",
-			"PlatformDomainNameServiceQuery.cpp",
-			"StaticDomainNameResolver.cpp",
-			"HostAddress.cpp",
-			"Timer.cpp",
-			"BoostTimer.cpp"]
-if myenv["target"] == "native":
-   sourceList.append("CAresDomainNameResolver.cpp")
-		
-
-objects = myenv.StaticObject(sourceList)
-swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/Network/StaticDomainNameResolver.cpp b/Swiften/Network/StaticDomainNameResolver.cpp
deleted file mode 100644
index a7275d2..0000000
--- a/Swiften/Network/StaticDomainNameResolver.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-#include "Swiften/Network/StaticDomainNameResolver.h"
-
-#include <boost/bind.hpp>
-#include <boost/lexical_cast.hpp>
-
-#include "Swiften/Network/DomainNameResolveError.h"
-#include "Swiften/Base/String.h"
-
-using namespace Swift;
-
-namespace {
-	struct ServiceQuery : public DomainNameServiceQuery, public EventOwner {
-		ServiceQuery(const String& service, Swift::StaticDomainNameResolver* resolver) : service(service), resolver(resolver) {}
-
-		virtual void run() {
-			if (!resolver->getIsResponsive()) {
-				return;
-			}
-			std::vector<DomainNameServiceQuery::Result> results;
-			for(StaticDomainNameResolver::ServicesCollection::const_iterator i = resolver->getServices().begin(); i != resolver->getServices().end(); ++i) {
-				if (i->first == service) {
-					results.push_back(i->second);
-				}
-			}
-			MainEventLoop::postEvent(boost::bind(boost::ref(onResult), results)); 
-		}
-
-		String service;
-		StaticDomainNameResolver* resolver;
-	};
-
-	struct AddressQuery : public DomainNameAddressQuery, public EventOwner {
-		AddressQuery(const String& host, StaticDomainNameResolver* resolver) : host(host), resolver(resolver) {}
-
-		virtual void run() {
-			if (!resolver->getIsResponsive()) {
-				return;
-			}
-			StaticDomainNameResolver::AddressesMap::const_iterator i = resolver->getAddresses().find(host);
-			if (i != resolver->getAddresses().end()) {
-				MainEventLoop::postEvent(
-						boost::bind(boost::ref(onResult), i->second, boost::optional<DomainNameResolveError>()));
-			}
-			else {
-				MainEventLoop::postEvent(boost::bind(boost::ref(onResult), HostAddress(), boost::optional<DomainNameResolveError>(DomainNameResolveError())));
-			}
-
-		}
-
-		String host;
-		StaticDomainNameResolver* resolver;
-	};
-}
-
-namespace Swift {
-
-StaticDomainNameResolver::StaticDomainNameResolver() : isResponsive(true) {
-}
-
-void StaticDomainNameResolver::addAddress(const String& domain, const HostAddress& address) {
-	addresses[domain] = address;
-}
-
-void StaticDomainNameResolver::addService(const String& service, const DomainNameServiceQuery::Result& result) {
-	services.push_back(std::make_pair(service, result));
-}
-
-void StaticDomainNameResolver::addXMPPClientService(const String& domain, const HostAddressPort& address) {
-	static int hostid = 0;
-	String hostname(std::string("host-") + boost::lexical_cast<std::string>(hostid));
-	hostid++;
-
-	addService("_xmpp-client._tcp." + domain, ServiceQuery::Result(hostname, address.getPort(), 0, 0));
-	addAddress(hostname, address.getAddress());
-}
-
-boost::shared_ptr<DomainNameServiceQuery> StaticDomainNameResolver::createServiceQuery(const String& name) {
-	return boost::shared_ptr<DomainNameServiceQuery>(new ServiceQuery(name, this));
-}
-
-boost::shared_ptr<DomainNameAddressQuery> StaticDomainNameResolver::createAddressQuery(const String& name) {
-	return boost::shared_ptr<DomainNameAddressQuery>(new AddressQuery(name, this));
-}
-
-}
diff --git a/Swiften/Network/StaticDomainNameResolver.h b/Swiften/Network/StaticDomainNameResolver.h
deleted file mode 100644
index d7e7ba4..0000000
--- a/Swiften/Network/StaticDomainNameResolver.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#pragma once
-
-#include <vector>
-#include <map>
-
-#include "Swiften/Network/HostAddress.h"
-#include "Swiften/Network/HostAddressPort.h"
-#include "Swiften/Network/DomainNameResolver.h"
-#include "Swiften/Network/DomainNameServiceQuery.h"
-#include "Swiften/Network/DomainNameAddressQuery.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-	class String;
-
-	class StaticDomainNameResolver : public DomainNameResolver {
-		public:
-			typedef std::map<String, HostAddress> AddressesMap;
-			typedef std::vector< std::pair<String, DomainNameServiceQuery::Result> > ServicesCollection;
-
-		public:
-			StaticDomainNameResolver();
-
-			void addAddress(const String& domain, const HostAddress& address);
-			void addService(const String& service, const DomainNameServiceQuery::Result& result);
-			void addXMPPClientService(const String& domain, const HostAddressPort&);
-
-			const AddressesMap& getAddresses() const {
-				return addresses;
-			}
-
-			const ServicesCollection& getServices() const {
-				return services;
-			}
-
-			bool getIsResponsive() const {
-				return isResponsive;
-			}
-
-			void setIsResponsive(bool b) {
-				isResponsive = b;
-			}
-
-			virtual boost::shared_ptr<DomainNameServiceQuery> createServiceQuery(const String& name);
-			virtual boost::shared_ptr<DomainNameAddressQuery> createAddressQuery(const String& name);
-			
-		private:
-			bool isResponsive;
-			AddressesMap addresses;
-			ServicesCollection services;
-	};
-}
diff --git a/Swiften/Network/Timer.cpp b/Swiften/Network/Timer.cpp
deleted file mode 100644
index a8d17c3..0000000
--- a/Swiften/Network/Timer.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Network/Timer.h"
-
-namespace Swift {
-
-Timer::~Timer() {
-}
-
-}
diff --git a/Swiften/Network/Timer.h b/Swiften/Network/Timer.h
deleted file mode 100644
index 9b01a0d..0000000
--- a/Swiften/Network/Timer.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#include <boost/signals.hpp>
-
-namespace Swift {
-	class Timer {
-		public:
-			virtual ~Timer();
-
-			virtual void start() = 0;
-			virtual void stop() = 0;
-
-			boost::signal<void ()> onTick;
-	};
-}
diff --git a/Swiften/Network/TimerFactory.cpp b/Swiften/Network/TimerFactory.cpp
deleted file mode 100644
index 642ac52..0000000
--- a/Swiften/Network/TimerFactory.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Network/TimerFactory.h"
-
-namespace Swift {
-
-TimerFactory::~TimerFactory() {
-}
-
-}
diff --git a/Swiften/Network/TimerFactory.h b/Swiften/Network/TimerFactory.h
deleted file mode 100644
index f72a8fc..0000000
--- a/Swiften/Network/TimerFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-namespace Swift {
-	class Timer;
-
-	class TimerFactory {
-		public:
-			virtual ~TimerFactory();
-
-			virtual boost::shared_ptr<Timer> createTimer(int milliseconds) = 0;
-	};
-}
diff --git a/Swiften/Network/UnitTest/ConnectorTest.cpp b/Swiften/Network/UnitTest/ConnectorTest.cpp
deleted file mode 100644
index 663011c..0000000
--- a/Swiften/Network/UnitTest/ConnectorTest.cpp
+++ /dev/null
@@ -1,245 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include <boost/optional.hpp>
-#include <boost/bind.hpp>
-
-#include "Swiften/Network/Connector.h"
-#include "Swiften/Network/Connection.h"
-#include "Swiften/Network/ConnectionFactory.h"
-#include "Swiften/Network/HostAddressPort.h"
-#include "Swiften/Network/StaticDomainNameResolver.h"
-#include "Swiften/Network/DummyTimerFactory.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-#include "Swiften/EventLoop/DummyEventLoop.h"
-
-using namespace Swift;
-
-class ConnectorTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(ConnectorTest);
-		CPPUNIT_TEST(testConnect);
-		CPPUNIT_TEST(testConnect_NoSRVHost);
-		CPPUNIT_TEST(testConnect_NoHosts);
-		CPPUNIT_TEST(testConnect_FirstSRVHostFails);
-		CPPUNIT_TEST(testConnect_AllSRVHostsFailWithoutFallbackHost);
-		CPPUNIT_TEST(testConnect_AllSRVHostsFailWithFallbackHost);
-		CPPUNIT_TEST(testConnect_SRVAndFallbackHostsFail);
-		CPPUNIT_TEST(testConnect_TimeoutDuringResolve);
-		CPPUNIT_TEST(testConnect_TimeoutDuringConnect);
-		CPPUNIT_TEST(testConnect_NoTimeout);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		ConnectorTest() : host1(HostAddress("1.1.1.1"), 1234), host2(HostAddress("2.2.2.2"), 2345), host3(HostAddress("3.3.3.3"), 5222) {
-		}
-		
-		void setUp() {
-			eventLoop = new DummyEventLoop();
-			resolver = new StaticDomainNameResolver();
-			connectionFactory = new MockConnectionFactory();
-			timerFactory = new DummyTimerFactory();
-		}
-
-		void tearDown() {
-			delete timerFactory;
-			delete connectionFactory;
-			delete resolver;
-			delete eventLoop;
-		}
-
-		void testConnect() {
-			std::auto_ptr<Connector> testling(createConnector());
-			resolver->addXMPPClientService("foo.com", host1);
-			resolver->addXMPPClientService("foo.com", host2);
-			resolver->addAddress("foo.com", host3.getAddress());
-
-			testling->start();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size()));
-			CPPUNIT_ASSERT(connections[0]);
-			CPPUNIT_ASSERT(host1 == *(connections[0]->hostAddressPort));
-		}
-
-		void testConnect_NoSRVHost() {
-			std::auto_ptr<Connector> testling(createConnector());
-			resolver->addAddress("foo.com", host3.getAddress());
-
-			testling->start();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size()));
-			CPPUNIT_ASSERT(connections[0]);
-			CPPUNIT_ASSERT(host3 == *(connections[0]->hostAddressPort));
-		}
-
-		void testConnect_NoHosts() {
-			std::auto_ptr<Connector> testling(createConnector());
-
-			testling->start();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size()));
-			CPPUNIT_ASSERT(!connections[0]);
-		}
-
-		void testConnect_FirstSRVHostFails() {
-			std::auto_ptr<Connector> testling(createConnector());
-			resolver->addXMPPClientService("foo.com", host1);
-			resolver->addXMPPClientService("foo.com", host2);
-			connectionFactory->failingPorts.push_back(host1);
-
-			testling->start();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size()));
-			CPPUNIT_ASSERT(host2 == *(connections[0]->hostAddressPort));
-		}
-
-		void testConnect_AllSRVHostsFailWithoutFallbackHost() {
-			std::auto_ptr<Connector> testling(createConnector());
-			resolver->addXMPPClientService("foo.com", host1);
-			resolver->addXMPPClientService("foo.com", host2);
-			connectionFactory->failingPorts.push_back(host1);
-			connectionFactory->failingPorts.push_back(host2);
-
-			testling->start();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size()));
-			CPPUNIT_ASSERT(!connections[0]);
-		}
-
-		void testConnect_AllSRVHostsFailWithFallbackHost() {
-			std::auto_ptr<Connector> testling(createConnector());
-			resolver->addXMPPClientService("foo.com", host1);
-			resolver->addXMPPClientService("foo.com", host2);
-			resolver->addAddress("foo.com", host3.getAddress());
-			connectionFactory->failingPorts.push_back(host1);
-			connectionFactory->failingPorts.push_back(host2);
-
-			testling->start();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size()));
-			CPPUNIT_ASSERT(connections[0]);
-			CPPUNIT_ASSERT(host3 == *(connections[0]->hostAddressPort));
-		}
-
-		void testConnect_SRVAndFallbackHostsFail() {
-			std::auto_ptr<Connector> testling(createConnector());
-			resolver->addXMPPClientService("foo.com", host1);
-			resolver->addAddress("foo.com", host3.getAddress());
-			connectionFactory->failingPorts.push_back(host1);
-			connectionFactory->failingPorts.push_back(host3);
-
-			testling->start();
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size()));
-			CPPUNIT_ASSERT(!connections[0]);
-		}
-
-		void testConnect_TimeoutDuringResolve() {
-			std::auto_ptr<Connector> testling(createConnector());
-			testling->setTimeoutMilliseconds(10);
-			resolver->setIsResponsive(false);
-
-			testling->start();
-			eventLoop->processEvents();
-			timerFactory->setTime(10);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size()));
-			CPPUNIT_ASSERT(!connections[0]);
-		}
-
-		void testConnect_TimeoutDuringConnect() {
-			std::auto_ptr<Connector> testling(createConnector());
-			testling->setTimeoutMilliseconds(10);
-			resolver->addXMPPClientService("foo.com", host1);
-			connectionFactory->isResponsive = false;
-
-			testling->start();
-			eventLoop->processEvents();
-			timerFactory->setTime(10);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size()));
-			CPPUNIT_ASSERT(!connections[0]);
-		}
-
-		void testConnect_NoTimeout() {
-			std::auto_ptr<Connector> testling(createConnector());
-			testling->setTimeoutMilliseconds(10);
-			resolver->addXMPPClientService("foo.com", host1);
-
-			testling->start();
-			eventLoop->processEvents();
-			timerFactory->setTime(10);
-			eventLoop->processEvents();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(connections.size()));
-			CPPUNIT_ASSERT(connections[0]);
-		}
-
-
-	private:
-		Connector* createConnector() {
-			Connector* connector = new Connector("foo.com", resolver, connectionFactory, timerFactory);
-			connector->onConnectFinished.connect(boost::bind(&ConnectorTest::handleConnectorFinished, this, _1));
-			return connector;
-		}
-
-		void handleConnectorFinished(boost::shared_ptr<Connection> connection) {
-			boost::shared_ptr<MockConnection> c(boost::dynamic_pointer_cast<MockConnection>(connection));
-			if (connection) {
-				assert(c);
-			}
-			connections.push_back(c);
-		}
-
-		struct MockConnection : public Connection {
-			public:
-				MockConnection(const std::vector<HostAddressPort>& failingPorts, bool isResponsive) : failingPorts(failingPorts), isResponsive(isResponsive) {}
-
-				void listen() { assert(false); }
-				void connect(const HostAddressPort& address) {
-					hostAddressPort = address;
-					if (isResponsive) {
-						MainEventLoop::postEvent(boost::bind(boost::ref(onConnectFinished), std::find(failingPorts.begin(), failingPorts.end(), address) != failingPorts.end()));
-					}
-				}
-
-				void disconnect() { assert(false); }
-				void write(const ByteArray&) { assert(false); }
-
-				boost::optional<HostAddressPort> hostAddressPort;
-				std::vector<HostAddressPort> failingPorts;
-				bool isResponsive;
-		};
-
-		struct MockConnectionFactory : public ConnectionFactory {
-			MockConnectionFactory() : isResponsive(true) {
-			}
-
-			boost::shared_ptr<Connection> createConnection() {
-				return boost::shared_ptr<Connection>(new MockConnection(failingPorts, isResponsive));
-			}
-
-			bool isResponsive;
-			std::vector<HostAddressPort> failingPorts;
-		};
-
-	private:
-		HostAddressPort host1;
-		HostAddressPort host2;
-		HostAddressPort host3;
-		DummyEventLoop* eventLoop;
-		StaticDomainNameResolver* resolver;
-		MockConnectionFactory* connectionFactory;
-		DummyTimerFactory* timerFactory;
-		std::vector< boost::shared_ptr<MockConnection> > connections;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ConnectorTest);
diff --git a/Swiften/Network/UnitTest/HostAddressTest.cpp b/Swiften/Network/UnitTest/HostAddressTest.cpp
deleted file mode 100644
index 50e9198..0000000
--- a/Swiften/Network/UnitTest/HostAddressTest.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Network/HostAddress.h"
-#include "Swiften/Base/String.h"
-
-using namespace Swift;
-
-class HostAddressTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(HostAddressTest);
-		CPPUNIT_TEST(testConstructor);
-		CPPUNIT_TEST(testToString);
-		CPPUNIT_TEST(testToString_IPv6);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testConstructor() {
-			HostAddress testling("192.168.1.254");
-
-			CPPUNIT_ASSERT_EQUAL(std::string("192.168.1.254"), testling.toString());
-		}
-
-		void testToString() {
-			unsigned char address[4] = {10, 0, 1, 253}; 
-			HostAddress testling(address, 4);
-
-			CPPUNIT_ASSERT_EQUAL(std::string("10.0.1.253"), testling.toString());
-		}
-
-		void testToString_IPv6() {
-			unsigned char address[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17}; 
-			HostAddress testling(address, 16);
-
-			CPPUNIT_ASSERT_EQUAL(std::string("0102:0304:0506:0708:090a:0b0c:0d0e:0f11"), testling.toString());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(HostAddressTest);
diff --git a/Swiften/Notifier/GrowlNotifier.cpp b/Swiften/Notifier/GrowlNotifier.cpp
deleted file mode 100644
index 13d3e6d..0000000
--- a/Swiften/Notifier/GrowlNotifier.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-// FIXME: Is it safe to pass boost::function<void()> by raw values?
-// FIXME: Should we release the strings created in the constructor?
-
-#include <cassert>
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Notifier/GrowlNotifier.h"
-
-#pragma GCC diagnostic ignored "-Wold-style-cast"
-
-namespace {
-	struct Context {
-		Context() {}
-		Context(const boost::function<void()>& callback) : callback(callback) {}
-
-		boost::function<void()> callback;
-	};
-
-	void notificationClicked(CFPropertyListRef growlContext) {
-		Context context;
-
-		CFDataRef growlContextData = (CFDataRef) CFArrayGetValueAtIndex((CFArrayRef) growlContext, 0);
-		assert(CFDataGetLength(growlContextData) == sizeof(Context));
-		CFDataGetBytes(growlContextData, CFRangeMake(0, CFDataGetLength(growlContextData)), (UInt8*) &context);
-		
-		context.callback();
-	}
-
-	void notificationTimedout(CFPropertyListRef) {
-	}
-}
-
-namespace Swift {
-
-GrowlNotifier::GrowlNotifier(const String& name) {
-	// All notifications
-	CFMutableArrayRef allNotifications = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
-	CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactAvailable)));
-	CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactUnavailable)));
-	CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactStatusChange)));
-	CFArrayAppendValue(allNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(IncomingMessage)));
-
-	// Default Notifications
-	CFMutableArrayRef defaultNotifications = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
-	CFArrayAppendValue(defaultNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(ContactAvailable)));
-	CFArrayAppendValue(defaultNotifications, SWIFTEN_STRING_TO_CFSTRING(typeToString(IncomingMessage)));
-
-	// Initialize delegate
-	InitGrowlDelegate(&delegate_);
-	delegate_.applicationName = SWIFTEN_STRING_TO_CFSTRING(name);
-	CFTypeRef keys[] = { GROWL_NOTIFICATIONS_ALL, GROWL_NOTIFICATIONS_DEFAULT };
-	CFTypeRef values[] = { allNotifications, defaultNotifications };
-	delegate_.registrationDictionary = CFDictionaryCreate(kCFAllocatorDefault, keys, values, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
-	delegate_.growlNotificationWasClicked = &notificationClicked;
-	delegate_.growlNotificationTimedOut = &notificationTimedout;
-	Growl_SetDelegate(&delegate_);
-}
-
-void GrowlNotifier::showMessage(Type type, const String& subject, const String& description, const ByteArray& picture, boost::function<void()> callback) {
-	CFStringRef cfSubject = SWIFTEN_STRING_TO_CFSTRING(subject);
-	CFStringRef cfDescription = SWIFTEN_STRING_TO_CFSTRING(description);
-	CFStringRef cfName = SWIFTEN_STRING_TO_CFSTRING(typeToString(type));
-	CFDataRef cfIcon = CFDataCreate( NULL, (UInt8*) picture.getData(), picture.getSize());
-	
-	Context context(callback);
-	CFDataRef cfContextData[1];
-	cfContextData[0] = CFDataCreate(kCFAllocatorDefault, (const UInt8*) &context, sizeof(Context));
-	CFArrayRef cfContext = CFArrayCreate( kCFAllocatorDefault, (const void **) cfContextData, 1, &kCFTypeArrayCallBacks );
-	CFRelease(cfContextData[0]);
-
-	Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext(cfSubject, cfDescription, cfName, cfIcon, 0, false, cfContext);
-
-	CFRelease(cfContext);
-	CFRelease(cfIcon);
-	CFRelease(cfName);
-	CFRelease(cfDescription);
-	CFRelease(cfSubject);
-}
-
-String GrowlNotifier::typeToString(Type type) {
-	switch (type) {
-		case ContactAvailable: return "Contact Becomes Available";
-		case ContactUnavailable: return "Contact Becomes Unavailable";
-		case ContactStatusChange: return "Contact Changes Status";
-		case IncomingMessage: return "Incoming Message";
-	}
-	assert(false);
-	return "";
-}
-
-}
diff --git a/Swiften/Notifier/GrowlNotifier.h b/Swiften/Notifier/GrowlNotifier.h
deleted file mode 100644
index 3bf53be..0000000
--- a/Swiften/Notifier/GrowlNotifier.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#pragma once
-
-#include <CoreFoundation/CoreFoundation.h>
-#include <Growl/Growl.h>
-
-#include "Swiften/Notifier/Notifier.h"
-
-namespace Swift {
-	/**
-	 * Preconditions for using growlnotifier:
-	 * - Must be part a bundle.
-	 * - The Carbon/Cocoa application loop must be running (e.g. through QApplication)
-	 *   such that notifications are coming through.
-	 *   TODO: Find out what the easiest way is to do this without a QApplication.
-	 */
-	class GrowlNotifier : public Notifier {
-		public:
-			GrowlNotifier(const String& name);
-
-			virtual void showMessage(Type type, const String& subject, const String& description, const ByteArray& picture, boost::function<void()> callback);
-		
-		private:
-			String typeToString(Type type);
-
-		private:
-			Growl_Delegate delegate_;
-	};
-}
diff --git a/Swiften/Notifier/Notifier.cpp b/Swiften/Notifier/Notifier.cpp
deleted file mode 100644
index 88cb0ee..0000000
--- a/Swiften/Notifier/Notifier.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Notifier/Notifier.h"
-
-namespace Swift {
-
-Notifier::~Notifier() {
-}
-
-}
diff --git a/Swiften/Notifier/Notifier.h b/Swiften/Notifier/Notifier.h
deleted file mode 100644
index 2ab3ba8..0000000
--- a/Swiften/Notifier/Notifier.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-#include <boost/function.hpp>
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class Notifier {
-		public:
-			virtual ~Notifier();
-
-			enum Type { ContactAvailable, ContactUnavailable, ContactStatusChange, IncomingMessage };
-
-			/**
-			 * Picture is a PNG image.
-			 */
-			virtual void showMessage(
-				Type type,
-				const String& subject, 
-				const String& description, 
-				const ByteArray& picture, 
-				boost::function<void()> callback) = 0;
-	};
-}
diff --git a/Swiften/Parser/AttributeMap.h b/Swiften/Parser/AttributeMap.h
deleted file mode 100644
index 82c839a..0000000
--- a/Swiften/Parser/AttributeMap.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef ATTRIBUTEMAP_H
-#define ATTRIBUTEMAP_H
-
-#include <map>
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class AttributeMap : public std::map<String,String> {
-		public:
-			AttributeMap() {}
-
-			String getAttribute(const String& attribute) const {
-				AttributeMap::const_iterator i = find(attribute);
-				if (i == end()) {
-					return "";
-				}
-				else {
-					return i->second;
-				}
-			}
-
-			bool getBoolAttribute(const String& attribute, bool defaultValue = false) const {
-				AttributeMap::const_iterator i = find(attribute);
-				if (i == end()) {
-					return defaultValue;
-				}
-				else {
-					return i->second == "true" || i->second == "1";
-				}
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/AuthChallengeParser.cpp b/Swiften/Parser/AuthChallengeParser.cpp
deleted file mode 100644
index c83cf7d..0000000
--- a/Swiften/Parser/AuthChallengeParser.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "Swiften/Parser/AuthChallengeParser.h"
-#include "Swiften/StringCodecs/Base64.h"
-
-namespace Swift {
-
-AuthChallengeParser::AuthChallengeParser() : GenericElementParser<AuthChallenge>(), depth(0) {
-}
-
-void AuthChallengeParser::handleStartElement(const String&, const String&, const AttributeMap&) {
-	++depth;
-}
-
-void AuthChallengeParser::handleEndElement(const String&, const String&) {
-	--depth;
-	if (depth == 0) {
-		getElementGeneric()->setValue(Base64::decode(text));
-	}
-}
-
-void AuthChallengeParser::handleCharacterData(const String& text) {
-	this->text += text;
-}
-
-}
diff --git a/Swiften/Parser/AuthChallengeParser.h b/Swiften/Parser/AuthChallengeParser.h
deleted file mode 100644
index be44b96..0000000
--- a/Swiften/Parser/AuthChallengeParser.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/AuthChallenge.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class AuthChallengeParser : public GenericElementParser<AuthChallenge> {
-		public:
-			AuthChallengeParser();
-
-			virtual void handleStartElement(const String&, const String& ns, const AttributeMap&);
-			virtual void handleEndElement(const String&, const String& ns);
-			virtual void handleCharacterData(const String&);
-
-		private:
-			int depth;
-			String text;
-	};
-}
diff --git a/Swiften/Parser/AuthFailureParser.h b/Swiften/Parser/AuthFailureParser.h
deleted file mode 100644
index 3a950ef..0000000
--- a/Swiften/Parser/AuthFailureParser.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_AuthFailureParser_H
-#define SWIFTEN_AuthFailureParser_H
-
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/AuthFailure.h"
-
-namespace Swift {
-	class AuthFailureParser : public GenericElementParser<AuthFailure> {
-		public:
-			AuthFailureParser() : GenericElementParser<AuthFailure>() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/AuthRequestParser.cpp b/Swiften/Parser/AuthRequestParser.cpp
deleted file mode 100644
index 5338b88..0000000
--- a/Swiften/Parser/AuthRequestParser.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "Swiften/Parser/AuthRequestParser.h"
-#include "Swiften/StringCodecs/Base64.h"
-
-namespace Swift {
-
-AuthRequestParser::AuthRequestParser() : GenericElementParser<AuthRequest>(), depth_(0) {
-}
-
-void AuthRequestParser::handleStartElement(const String&, const String&, const AttributeMap& attribute) {
-	if (depth_ == 0) {
-		getElementGeneric()->setMechanism(attribute.getAttribute("mechanism"));
-	}
-	++depth_;
-}
-
-void AuthRequestParser::handleEndElement(const String&, const String&) {
-	--depth_;
-	if (depth_ == 0) {
-		getElementGeneric()->setMessage(Base64::decode(text_));
-	}
-}
-
-void AuthRequestParser::handleCharacterData(const String& text) {
-	text_ += text;
-}
-
-}
diff --git a/Swiften/Parser/AuthRequestParser.h b/Swiften/Parser/AuthRequestParser.h
deleted file mode 100644
index 8916922..0000000
--- a/Swiften/Parser/AuthRequestParser.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef SWIFTEN_AuthRequestParser_H
-#define SWIFTEN_AuthRequestParser_H
-
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/AuthRequest.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class AuthRequestParser : public GenericElementParser<AuthRequest> {
-		public:
-			AuthRequestParser();
-
-			virtual void handleStartElement(const String&, const String& ns, const AttributeMap&);
-			virtual void handleEndElement(const String&, const String& ns);
-			virtual void handleCharacterData(const String&);
-
-		private:
-			String text_;
-			int depth_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/AuthResponseParser.cpp b/Swiften/Parser/AuthResponseParser.cpp
deleted file mode 100644
index b5976a5..0000000
--- a/Swiften/Parser/AuthResponseParser.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "Swiften/Parser/AuthResponseParser.h"
-#include "Swiften/StringCodecs/Base64.h"
-
-namespace Swift {
-
-AuthResponseParser::AuthResponseParser() : GenericElementParser<AuthResponse>(), depth(0) {
-}
-
-void AuthResponseParser::handleStartElement(const String&, const String&, const AttributeMap&) {
-	++depth;
-}
-
-void AuthResponseParser::handleEndElement(const String&, const String&) {
-	--depth;
-	if (depth == 0) {
-		getElementGeneric()->setValue(Base64::decode(text));
-	}
-}
-
-void AuthResponseParser::handleCharacterData(const String& text) {
-	this->text += text;
-}
-
-}
diff --git a/Swiften/Parser/AuthResponseParser.h b/Swiften/Parser/AuthResponseParser.h
deleted file mode 100644
index f2b3a9e..0000000
--- a/Swiften/Parser/AuthResponseParser.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/AuthResponse.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class AuthResponseParser : public GenericElementParser<AuthResponse> {
-		public:
-			AuthResponseParser();
-
-			virtual void handleStartElement(const String&, const String& ns, const AttributeMap&);
-			virtual void handleEndElement(const String&, const String& ns);
-			virtual void handleCharacterData(const String&);
-
-		private:
-			int depth;
-			String text;
-	};
-}
diff --git a/Swiften/Parser/AuthSuccessParser.cpp b/Swiften/Parser/AuthSuccessParser.cpp
deleted file mode 100644
index 2dc2aa2..0000000
--- a/Swiften/Parser/AuthSuccessParser.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "Swiften/Parser/AuthSuccessParser.h"
-#include "Swiften/StringCodecs/Base64.h"
-
-namespace Swift {
-
-AuthSuccessParser::AuthSuccessParser() : GenericElementParser<AuthSuccess>(), depth(0) {
-}
-
-void AuthSuccessParser::handleStartElement(const String&, const String&, const AttributeMap&) {
-	++depth;
-}
-
-void AuthSuccessParser::handleEndElement(const String&, const String&) {
-	--depth;
-	if (depth == 0) {
-		getElementGeneric()->setValue(Base64::decode(text));
-	}
-}
-
-void AuthSuccessParser::handleCharacterData(const String& text) {
-	this->text += text;
-}
-
-}
diff --git a/Swiften/Parser/AuthSuccessParser.h b/Swiften/Parser/AuthSuccessParser.h
deleted file mode 100644
index 5d987c5..0000000
--- a/Swiften/Parser/AuthSuccessParser.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/AuthSuccess.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class AuthSuccessParser : public GenericElementParser<AuthSuccess> {
-		public:
-			AuthSuccessParser();
-
-			virtual void handleStartElement(const String&, const String& ns, const AttributeMap&);
-			virtual void handleEndElement(const String&, const String& ns);
-			virtual void handleCharacterData(const String&);
-
-		private:
-			int depth;
-			String text;
-	};
-}
diff --git a/Swiften/Parser/CompressFailureParser.h b/Swiften/Parser/CompressFailureParser.h
deleted file mode 100644
index d53e0ef..0000000
--- a/Swiften/Parser/CompressFailureParser.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_CompressFailureParser_H
-#define SWIFTEN_CompressFailureParser_H
-
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/CompressFailure.h"
-
-namespace Swift {
-	class CompressFailureParser : public GenericElementParser<CompressFailure> {
-		public:
-			CompressFailureParser() : GenericElementParser<CompressFailure>() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/CompressParser.cpp b/Swiften/Parser/CompressParser.cpp
deleted file mode 100644
index 7ca752d..0000000
--- a/Swiften/Parser/CompressParser.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "Swiften/Parser/CompressParser.h"
-
-namespace Swift {
-
-CompressParser::CompressParser() : GenericElementParser<CompressRequest>(), currentDepth_(0), inMethod_(false) {
-}
-
-void CompressParser::handleStartElement(const String& element, const String&, const AttributeMap&) {
-	if (currentDepth_ == 1 && element == "method") {
-		inMethod_ = true;
-		currentText_ = "";
-	}
-	++currentDepth_;
-}
-
-void CompressParser::handleEndElement(const String&, const String&) {
-	--currentDepth_;
-	if (currentDepth_ == 1 && inMethod_) {
-		getElementGeneric()->setMethod(currentText_);
-		inMethod_ = false;
-	}
-}
-
-void CompressParser::handleCharacterData(const String& data) {
-	currentText_ += data;
-}
-
-}
diff --git a/Swiften/Parser/CompressParser.h b/Swiften/Parser/CompressParser.h
deleted file mode 100644
index 8931778..0000000
--- a/Swiften/Parser/CompressParser.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef SWIFTEN_CompressParser_H
-#define SWIFTEN_CompressParser_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/CompressRequest.h"
-
-namespace Swift {
-	class CompressParser : public GenericElementParser<CompressRequest> {
-		public:
-			CompressParser();
-
-		private:
-			void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes);
-			void handleEndElement(const String& element, const String& ns);
-			void handleCharacterData(const String& data);
-
-		private:
-			int currentDepth_;
-			String currentText_;
-			bool inMethod_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/CompressedParser.h b/Swiften/Parser/CompressedParser.h
deleted file mode 100644
index 365f619..0000000
--- a/Swiften/Parser/CompressedParser.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_COMPRESSEDPARSER_H
-#define SWIFTEN_COMPRESSEDPARSER_H
-
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/Compressed.h"
-
-namespace Swift {
-	class CompressedParser : public GenericElementParser<Compressed> {
-		public:
-			CompressedParser() : GenericElementParser<Compressed>() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/ElementParser.cpp b/Swiften/Parser/ElementParser.cpp
deleted file mode 100644
index 1c04d92..0000000
--- a/Swiften/Parser/ElementParser.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Parser/ElementParser.h"
-
-namespace Swift {
-
-ElementParser::~ElementParser() {
-}
-
-}
diff --git a/Swiften/Parser/ElementParser.h b/Swiften/Parser/ElementParser.h
deleted file mode 100644
index 3848f0c..0000000
--- a/Swiften/Parser/ElementParser.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef SWIFTEN_ElementParser_H
-#define SWIFTEN_ElementParser_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Element.h"
-#include "Swiften/Parser/AttributeMap.h"
-
-namespace Swift {
-	class ElementParser {
-		public:
-			virtual ~ElementParser();
-
-			virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) = 0;
-			virtual void handleEndElement(const String& element, const String& ns) = 0;
-			virtual void handleCharacterData(const String& data) = 0;
-
-			virtual boost::shared_ptr<Element> getElement() const = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/ExpatParser.cpp b/Swiften/Parser/ExpatParser.cpp
deleted file mode 100644
index 6f7ff86..0000000
--- a/Swiften/Parser/ExpatParser.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "Swiften/Parser/ExpatParser.h"
-
-#include <iostream>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Parser/XMLParserClient.h"
-
-namespace Swift {
-
-static const char NAMESPACE_SEPARATOR = '\x01';
-
-static void handleStartElement(void* client, const XML_Char* name, const XML_Char** attributes) {
-	std::pair<String,String> nsTagPair = String(name).getSplittedAtFirst(NAMESPACE_SEPARATOR);
-	if (nsTagPair.second == "") {
-		nsTagPair.second = nsTagPair.first;
-		nsTagPair.first = "";
-	}
-	AttributeMap attributeValues;
-	const XML_Char** currentAttribute = attributes;
-	while (*currentAttribute) {
-		std::pair<String,String> nsAttributePair = String(*currentAttribute).getSplittedAtFirst(NAMESPACE_SEPARATOR);
-		if (nsAttributePair.second == "") {
-			nsAttributePair.second = nsAttributePair.first;
-			nsAttributePair.first = "";
-		}
-		attributeValues[nsAttributePair.second] = String(*(currentAttribute+1));
-		currentAttribute += 2;
-	}
-
-	static_cast<XMLParserClient*>(client)->handleStartElement(nsTagPair.second, nsTagPair.first, attributeValues);
-}
-
-static void handleEndElement(void* client, const XML_Char* name) {
-	std::pair<String,String> nsTagPair = String(name).getSplittedAtFirst(NAMESPACE_SEPARATOR);
-	if (nsTagPair.second == "") {
-		nsTagPair.second = nsTagPair.first;
-		nsTagPair.first = "";
-	}
-	static_cast<XMLParserClient*>(client)->handleEndElement(nsTagPair.second, nsTagPair.first);
-}
-
-static void handleCharacterData(void* client, const XML_Char* data, int len) {
-	static_cast<XMLParserClient*>(client)->handleCharacterData(String(data, len));
-}
-
-static void handleXMLDeclaration(void*, const XML_Char*, const XML_Char*, int) {
-}
-
-
-ExpatParser::ExpatParser(XMLParserClient* client) : XMLParser(client) {
-	parser_ = XML_ParserCreateNS("UTF-8", NAMESPACE_SEPARATOR);
-	XML_SetUserData(parser_, client);
-	XML_SetElementHandler(parser_, handleStartElement, handleEndElement);
-	XML_SetCharacterDataHandler(parser_, handleCharacterData);
-	XML_SetXmlDeclHandler(parser_, handleXMLDeclaration);
-}
-
-ExpatParser::~ExpatParser() {
-	XML_ParserFree(parser_);
-}
-
-bool ExpatParser::parse(const String& data) {
-	bool success = XML_Parse(parser_, data.getUTF8Data(), data.getUTF8Size(), false) == XML_STATUS_OK;
-	/*if (!success) {
-		std::cout << "ERROR: " << XML_ErrorString(XML_GetErrorCode(parser_)) << " while parsing " << data << std::endl;
-	}*/
-	return success;
-}
-
-}
diff --git a/Swiften/Parser/ExpatParser.h b/Swiften/Parser/ExpatParser.h
deleted file mode 100644
index 2b5e646..0000000
--- a/Swiften/Parser/ExpatParser.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_ExpatParser_H
-#define SWIFTEN_ExpatParser_H
-
-#include <expat.h>
-#include <boost/noncopyable.hpp>
-
-#include "Swiften/Parser/XMLParser.h"
-
-namespace Swift {
-	class ExpatParser : public XMLParser, public boost::noncopyable {
-		public:
-			ExpatParser(XMLParserClient* client);
-			~ExpatParser();
-
-			bool parse(const String& data);
-
-		private:
-			XML_Parser parser_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/GenericElementParser.h b/Swiften/Parser/GenericElementParser.h
deleted file mode 100644
index e1b9cf7..0000000
--- a/Swiften/Parser/GenericElementParser.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef SWIFTEN_GenericElementParser_H
-#define SWIFTEN_GenericElementParser_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Parser/ElementParser.h"
-
-namespace Swift {
-	class String;
-	class PayloadParserFactoryCollection;
-
-	template<typename ElementType>
-	class GenericElementParser : public ElementParser {
-		public:
-			GenericElementParser() {
-				stanza_ = boost::shared_ptr<ElementType>(new ElementType());
-			}
-
-			virtual boost::shared_ptr<Element> getElement() const {
-				return stanza_;
-			}
-
-		protected:
-			virtual boost::shared_ptr<ElementType> getElementGeneric() const {
-				return stanza_;
-			}
-
-		private:
-			virtual void handleStartElement(const String&, const String&, const AttributeMap&) {
-			}
-
-			virtual void handleEndElement(const String&, const String&) {
-			}
-
-			virtual void handleCharacterData(const String&) {
-			}
-
-		private:
-			boost::shared_ptr<ElementType> stanza_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/GenericPayloadParser.h b/Swiften/Parser/GenericPayloadParser.h
deleted file mode 100644
index a07b795..0000000
--- a/Swiften/Parser/GenericPayloadParser.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef GENERICPAYLOADPARSER_H
-#define GENERICPAYLOADPARSER_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Parser/PayloadParser.h"
-
-namespace Swift {
-	class String;
-
-	template<typename PAYLOAD_TYPE>
-	class GenericPayloadParser : public PayloadParser {
-		public:
-			GenericPayloadParser() : PayloadParser() {
-				payload_ = boost::shared_ptr<PAYLOAD_TYPE>(new PAYLOAD_TYPE());
-			}
-
-			virtual boost::shared_ptr<Payload> getPayload() const {
-				return payload_;
-			}
-
-		protected:
-			virtual boost::shared_ptr<PAYLOAD_TYPE> getPayloadInternal() const {
-				return payload_;
-			}
-
-		private:
-			boost::shared_ptr<PAYLOAD_TYPE> payload_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/GenericPayloadParserFactory.h b/Swiften/Parser/GenericPayloadParserFactory.h
deleted file mode 100644
index d537b46..0000000
--- a/Swiften/Parser/GenericPayloadParserFactory.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef SWIFTEN_GENERICPAYLOADPARSERFACTORY_H
-#define SWIFTEN_GENERICPAYLOADPARSERFACTORY_H
-
-#include "Swiften/Parser/PayloadParserFactory.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-
-	template<typename PARSER_TYPE>
-	class GenericPayloadParserFactory : public PayloadParserFactory {
-		public:
-			GenericPayloadParserFactory(const String& tag, const String& xmlns = "") : tag_(tag), xmlns_(xmlns) {}
-
-			virtual bool canParse(const String& element, const String& ns, const AttributeMap&) const {
-				return element == tag_ && (xmlns_.isEmpty() ? true : xmlns_ == ns);
-			}
-
-			virtual PayloadParser* createPayloadParser() {
-				return new PARSER_TYPE();
-			}
-
-		private:
-			String tag_;
-			String xmlns_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/GenericStanzaParser.h b/Swiften/Parser/GenericStanzaParser.h
deleted file mode 100644
index ba1807a..0000000
--- a/Swiften/Parser/GenericStanzaParser.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef SWIFTEN_GenericStanzaParser_H
-#define SWIFTEN_GenericStanzaParser_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Parser/StanzaParser.h"
-
-namespace Swift {
-	class String;
-	class PayloadParserFactoryCollection;
-
-	template<typename STANZA_TYPE>
-	class GenericStanzaParser : public StanzaParser {
-		public:
-			GenericStanzaParser(PayloadParserFactoryCollection* collection) : 
-						StanzaParser(collection) {
-				stanza_ = boost::shared_ptr<STANZA_TYPE>(new STANZA_TYPE());
-			}
-
-			virtual boost::shared_ptr<Element> getElement() const {
-				return stanza_;
-			}
-
-			virtual boost::shared_ptr<STANZA_TYPE> getStanzaGeneric() const {
-				return stanza_;
-			}
-
-		private:
-			boost::shared_ptr<STANZA_TYPE> stanza_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/IQParser.cpp b/Swiften/Parser/IQParser.cpp
deleted file mode 100644
index 2b4b364..0000000
--- a/Swiften/Parser/IQParser.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <iostream>
-
-#include "Swiften/Parser/IQParser.h"
-
-namespace Swift {
-
-IQParser::IQParser(PayloadParserFactoryCollection* factories) : 
-		GenericStanzaParser<IQ>(factories) {
-}
-
-void IQParser::handleStanzaAttributes(const AttributeMap& attributes) {
-	AttributeMap::const_iterator type = attributes.find("type");
-	if (type != attributes.end()) {
-		if (type->second == "set") {
-			getStanzaGeneric()->setType(IQ::Set);
-		}
-		else if (type->second == "get") {
-			getStanzaGeneric()->setType(IQ::Get);
-		}
-		else if (type->second == "result") {
-			getStanzaGeneric()->setType(IQ::Result);
-		}
-		else if (type->second == "error") {
-			getStanzaGeneric()->setType(IQ::Error);
-		}
-		else {
-			std::cerr << "Unknown IQ type: " << type->second << std::endl;
-			getStanzaGeneric()->setType(IQ::Get);
-		}
-	}
-}
-
-}
diff --git a/Swiften/Parser/IQParser.h b/Swiften/Parser/IQParser.h
deleted file mode 100644
index cd2fc05..0000000
--- a/Swiften/Parser/IQParser.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef SWIFTEN_IQParser_H
-#define SWIFTEN_IQParser_H
-
-#include "Swiften/Parser/GenericStanzaParser.h"
-#include "Swiften/Elements/IQ.h"
-
-namespace Swift {
-	class IQParser : public GenericStanzaParser<IQ> {
-		public:
-			IQParser(PayloadParserFactoryCollection* factories);
-
-		private:
-			virtual void handleStanzaAttributes(const AttributeMap&);
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/LibXMLParser.cpp b/Swiften/Parser/LibXMLParser.cpp
deleted file mode 100644
index f43ed00..0000000
--- a/Swiften/Parser/LibXMLParser.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-#include "Swiften/Parser/LibXMLParser.h"
-
-#include <iostream>
-#include <cassert>
-#include <cstring>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Parser/XMLParserClient.h"
-
-namespace Swift {
-
-static void handleStartElement(void *client, const xmlChar* name, const xmlChar*, const xmlChar* xmlns, int, const xmlChar**, int nbAttributes, int, const xmlChar ** attributes) {
-	AttributeMap attributeValues;
-	for (int i = 0; i < nbAttributes*5; i += 5) {
-		attributeValues[String(reinterpret_cast<const char*>(attributes[i]))] = String(reinterpret_cast<const char*>(attributes[i+3]), attributes[i+4]-attributes[i+3]);
-	}
-	static_cast<XMLParserClient*>(client)->handleStartElement(reinterpret_cast<const char*>(name), (xmlns ? reinterpret_cast<const char*>(xmlns) : String()), attributeValues);
-}
-
-static void handleEndElement(void *client, const xmlChar* name, const xmlChar*, const xmlChar* xmlns) {
-	static_cast<XMLParserClient*>(client)->handleEndElement(reinterpret_cast<const char*>(name), (xmlns ? reinterpret_cast<const char*>(xmlns) : String()));
-}
-
-static void handleCharacterData(void* client, const xmlChar* data, int len) {
-	static_cast<XMLParserClient*>(client)->handleCharacterData(String(reinterpret_cast<const char*>(data), len));
-}
-
-static void handleError(void*, const char*, ... ) {
-	/*
-	va_list args;
-	va_start(args, m);
-	vfprintf(stdout, m, args);
-	va_end(args);
-	*/
-}
-
-static void handleWarning(void*, const char*, ... ) {
-}
-
-
-
-LibXMLParser::LibXMLParser(XMLParserClient* client) : XMLParser(client) {
-	memset(&handler_, 0, sizeof(handler_) );
-	handler_.initialized = XML_SAX2_MAGIC;
-	handler_.startElementNs = &handleStartElement;
-	handler_.endElementNs = &handleEndElement;
-	handler_.characters = &handleCharacterData;
-	handler_.warning = &handleWarning;
-	handler_.error = &handleError;
-
-	context_ = xmlCreatePushParserCtxt(&handler_, client, 0, 0, 0);
-	assert(context_);
-}
-
-LibXMLParser::~LibXMLParser() {
-	if (context_) {
-		xmlFreeParserCtxt(context_);
-	}
-}
-
-bool LibXMLParser::parse(const String& data) {
-	return xmlParseChunk(context_, data.getUTF8Data(), data.getUTF8Size(), false) == XML_ERR_OK;
-}
-
-}
diff --git a/Swiften/Parser/LibXMLParser.h b/Swiften/Parser/LibXMLParser.h
deleted file mode 100644
index 58a65f1..0000000
--- a/Swiften/Parser/LibXMLParser.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include <libxml/parser.h>
-#include <boost/noncopyable.hpp>
-
-#include "Swiften/Parser/XMLParser.h"
-
-namespace Swift {
-	class LibXMLParser : public XMLParser, public boost::noncopyable {
-		public:
-			LibXMLParser(XMLParserClient* client);
-			~LibXMLParser();
-
-			bool parse(const String& data);
-
-		private:
-			xmlSAXHandler handler_;
-			xmlParserCtxtPtr context_;
-	};
-}
diff --git a/Swiften/Parser/MessageParser.cpp b/Swiften/Parser/MessageParser.cpp
deleted file mode 100644
index 5e83fad..0000000
--- a/Swiften/Parser/MessageParser.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <iostream>
-
-#include "Swiften/Parser/MessageParser.h"
-
-namespace Swift {
-
-MessageParser::MessageParser(PayloadParserFactoryCollection* factories) : 
-		GenericStanzaParser<Message>(factories) {
-	getStanzaGeneric()->setType(Message::Normal);
-}
-
-void MessageParser::handleStanzaAttributes(const AttributeMap& attributes) {
-	AttributeMap::const_iterator type = attributes.find("type");
-	if (type != attributes.end()) {
-		if (type->second == "chat") {
-			getStanzaGeneric()->setType(Message::Chat);
-		}
-		else if (type->second == "error") {
-			getStanzaGeneric()->setType(Message::Error);
-		}
-		else if (type->second == "groupchat") {
-			getStanzaGeneric()->setType(Message::Groupchat);
-		}
-		else if (type->second == "headline") {
-			getStanzaGeneric()->setType(Message::Headline);
-		}
-		else {
-			getStanzaGeneric()->setType(Message::Normal);
-		}
-	}
-}
-
-}
diff --git a/Swiften/Parser/MessageParser.h b/Swiften/Parser/MessageParser.h
deleted file mode 100644
index 05c9280..0000000
--- a/Swiften/Parser/MessageParser.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef SWIFTEN_MESSAGEPARSER_H
-#define SWIFTEN_MESSAGEPARSER_H
-
-#include "Swiften/Parser/GenericStanzaParser.h"
-#include "Swiften/Elements/Message.h"
-
-namespace Swift {
-	class MessageParser : public GenericStanzaParser<Message> {
-		public:
-			MessageParser(PayloadParserFactoryCollection* factories);
-
-		private:
-			virtual void handleStanzaAttributes(const AttributeMap&);
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParser.cpp b/Swiften/Parser/PayloadParser.cpp
deleted file mode 100644
index 072edef..0000000
--- a/Swiften/Parser/PayloadParser.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Parser/PayloadParser.h"
-
-namespace Swift {
-
-PayloadParser::~PayloadParser() {
-}
-
-}
diff --git a/Swiften/Parser/PayloadParser.h b/Swiften/Parser/PayloadParser.h
deleted file mode 100644
index fc1e1c8..0000000
--- a/Swiften/Parser/PayloadParser.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef SWIFTEN_PAYLOADPARSER_H
-#define SWIFTEN_PAYLOADPARSER_H
-
-#include <boost/shared_ptr.hpp>
-#include "Swiften/Parser/AttributeMap.h"
-
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class String;
-
-	class PayloadParser {
-		public:
-			virtual ~PayloadParser();
-
-			virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) = 0;
-			virtual void handleEndElement(const String& element, const String& ns) = 0;
-			virtual void handleCharacterData(const String& data) = 0;
-
-			virtual boost::shared_ptr<Payload> getPayload() const = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParserFactory.cpp b/Swiften/Parser/PayloadParserFactory.cpp
deleted file mode 100644
index b31f8ae..0000000
--- a/Swiften/Parser/PayloadParserFactory.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Parser/PayloadParserFactory.h"
-
-namespace Swift {
-
-PayloadParserFactory::~PayloadParserFactory() {
-}
-
-}
diff --git a/Swiften/Parser/PayloadParserFactory.h b/Swiften/Parser/PayloadParserFactory.h
deleted file mode 100644
index 728b4e8..0000000
--- a/Swiften/Parser/PayloadParserFactory.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef SWIFTEN_PAYLOADPARSERFACTORY_H
-#define SWIFTEN_PAYLOADPARSERFACTORY_H
-
-#include "Swiften/Parser/AttributeMap.h"
-
-namespace Swift {
-	class String;
-	class PayloadParser;
-
-	class PayloadParserFactory {
-		public:
-			virtual ~PayloadParserFactory();
-
-			virtual bool canParse(const String& element, const String& ns, const AttributeMap& attributes) const = 0;
-			virtual PayloadParser* createPayloadParser() = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParserFactoryCollection.cpp b/Swiften/Parser/PayloadParserFactoryCollection.cpp
deleted file mode 100644
index 6d3a4cf..0000000
--- a/Swiften/Parser/PayloadParserFactoryCollection.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <boost/bind.hpp>
-#include <algorithm>
-
-#include "Swiften/Parser/PayloadParserFactoryCollection.h"
-#include "Swiften/Parser/PayloadParserFactory.h"
-
-namespace Swift {
-
-PayloadParserFactoryCollection::PayloadParserFactoryCollection() : defaultFactory_(NULL) {
-}
-
-void PayloadParserFactoryCollection::addFactory(PayloadParserFactory* factory) {
-	factories_.push_back(factory);
-}
-
-void PayloadParserFactoryCollection::removeFactory(PayloadParserFactory* factory) {
-	factories_.erase(remove(factories_.begin(), factories_.end(), factory), factories_.end());
-}
-
-void PayloadParserFactoryCollection::setDefaultFactory(PayloadParserFactory* factory) {
-	defaultFactory_ = factory;
-}
-
-PayloadParserFactory* PayloadParserFactoryCollection::getPayloadParserFactory(const String& element, const String& ns, const AttributeMap& attributes) {
-	std::vector<PayloadParserFactory*>::reverse_iterator i = std::find_if(
-			factories_.rbegin(), factories_.rend(), 
-			boost::bind(&PayloadParserFactory::canParse, _1, element, ns, attributes));
-	return (i != factories_.rend() ? *i : defaultFactory_);
-}
-
-}
diff --git a/Swiften/Parser/PayloadParserFactoryCollection.h b/Swiften/Parser/PayloadParserFactoryCollection.h
deleted file mode 100644
index 80a763b..0000000
--- a/Swiften/Parser/PayloadParserFactoryCollection.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef SWIFTEN_PAYLOADPARSERFACTORYCOLLECTION_H
-#define SWIFTEN_PAYLOADPARSERFACTORYCOLLECTION_H
-
-#include <vector>
-
-#include "Swiften/Parser/AttributeMap.h"
-
-namespace Swift {
-	class PayloadParserFactory;
-	class String;
-
-	class PayloadParserFactoryCollection {
-		public:
-			PayloadParserFactoryCollection();
-
-			void addFactory(PayloadParserFactory* factory);
-			void removeFactory(PayloadParserFactory* factory);
-			void setDefaultFactory(PayloadParserFactory* factory);
-
-			PayloadParserFactory* getPayloadParserFactory(const String& element, const String& ns, const AttributeMap& attributes);
-
-		private:
-			std::vector<PayloadParserFactory*> factories_;
-			PayloadParserFactory* defaultFactory_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/BodyParser.cpp b/Swiften/Parser/PayloadParsers/BodyParser.cpp
deleted file mode 100644
index e5898ff..0000000
--- a/Swiften/Parser/PayloadParsers/BodyParser.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/BodyParser.h"
-
-namespace Swift {
-
-BodyParser::BodyParser() : level_(0) {
-}
-
-void BodyParser::handleStartElement(const String&, const String&, const AttributeMap&) {
-	++level_;
-}
-
-void BodyParser::handleEndElement(const String&, const String&) {
-	--level_;
-	if (level_ == 0) {
-		getPayloadInternal()->setText(text_);
-	}
-}
-
-void BodyParser::handleCharacterData(const String& data) {
-	text_ += data;
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/BodyParser.h b/Swiften/Parser/PayloadParsers/BodyParser.h
deleted file mode 100644
index 2d272ea..0000000
--- a/Swiften/Parser/PayloadParsers/BodyParser.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_BodyParser_H
-#define SWIFTEN_BodyParser_H
-
-#include "Swiften/Elements/Body.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class BodyParser : public GenericPayloadParser<Body> {
-		public:
-			BodyParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			int level_;
-			String text_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/BodyParserFactory.h b/Swiften/Parser/PayloadParsers/BodyParserFactory.h
deleted file mode 100644
index 3da7393..0000000
--- a/Swiften/Parser/PayloadParsers/BodyParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_BodyParserFACTORY_H
-#define SWIFTEN_BodyParserFACTORY_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/BodyParser.h"
-
-namespace Swift {
-	class BodyParserFactory : public GenericPayloadParserFactory<BodyParser> {
-		public:
-			BodyParserFactory() : GenericPayloadParserFactory<BodyParser>("body") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/ChatStateParser.cpp b/Swiften/Parser/PayloadParsers/ChatStateParser.cpp
deleted file mode 100644
index 52d860a..0000000
--- a/Swiften/Parser/PayloadParsers/ChatStateParser.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/ChatStateParser.h"
-
-namespace Swift {
-
-ChatStateParser::ChatStateParser() : level_(0) {
-}
-
-void ChatStateParser::handleStartElement(const String& element, const String&, const AttributeMap&) {
-	if (level_ == 0) {
-		ChatState::ChatStateType state = ChatState::Active;
-		if (element == "active") {
-			state = ChatState::Active;
-		} else if (element == "composing") {
-			state = ChatState::Composing;
-		} else if (element == "inactive") {
-			state = ChatState::Inactive;
-		} else if (element == "paused") {
-			state = ChatState::Paused;
-		} else if (element == "gone") {
-			state = ChatState::Gone;
-		}
-		getPayloadInternal()->setChatState(state);
-	}
-	++level_;
-}
-
-void ChatStateParser::handleEndElement(const String&, const String&) {
-	--level_;
-}
-
-void ChatStateParser::handleCharacterData(const String&) {
-
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/ChatStateParser.h b/Swiften/Parser/PayloadParsers/ChatStateParser.h
deleted file mode 100644
index cd212c0..0000000
--- a/Swiften/Parser/PayloadParsers/ChatStateParser.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#pragma once
-
-#include "Swiften/Elements/ChatState.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class ChatStateParser : public GenericPayloadParser<ChatState> {
-		public:
-			ChatStateParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			int level_;
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/ChatStateParserFactory.h b/Swiften/Parser/PayloadParsers/ChatStateParserFactory.h
deleted file mode 100644
index 1582d09..0000000
--- a/Swiften/Parser/PayloadParsers/ChatStateParserFactory.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-
-#include "Swiften/Parser/PayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/ChatStateParser.h"
-
-namespace Swift {
-	class PayloadParserFactoryCollection;
-
-	class ChatStateParserFactory : public PayloadParserFactory {
-		public:
-			ChatStateParserFactory() {
-			}
-
-			virtual bool canParse(const String& element, const String& ns, const AttributeMap&) const {
-				return ns == "http://jabber.org/protocol/chatstates" && 
-					(element == "active" || element == "composing" 
-					 || element == "paused" || element == "inactive" || element == "gone");
-			}
-
-			virtual PayloadParser* createPayloadParser() {
-				return new ChatStateParser();
-			}
-
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/DiscoInfoParser.cpp b/Swiften/Parser/PayloadParsers/DiscoInfoParser.cpp
deleted file mode 100644
index ffa24ad..0000000
--- a/Swiften/Parser/PayloadParsers/DiscoInfoParser.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/DiscoInfoParser.h"
-
-namespace Swift {
-
-DiscoInfoParser::DiscoInfoParser() : level_(TopLevel) {
-}
-
-void DiscoInfoParser::handleStartElement(const String& element, const String&, const AttributeMap& attributes) {
-	if (level_ == PayloadLevel) {
-		if (element == "identity") {
-			getPayloadInternal()->addIdentity(DiscoInfo::Identity(attributes.getAttribute("name"), attributes.getAttribute("category"), attributes.getAttribute("type"), attributes.getAttribute("lang")));
-		}
-		else if (element == "feature") {
-			getPayloadInternal()->addFeature(attributes.getAttribute("var"));
-		}
-	}
-	++level_;
-}
-
-void DiscoInfoParser::handleEndElement(const String&, const String&) {
-	--level_;
-}
-
-void DiscoInfoParser::handleCharacterData(const String&) {
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/DiscoInfoParser.h b/Swiften/Parser/PayloadParsers/DiscoInfoParser.h
deleted file mode 100644
index b7be972..0000000
--- a/Swiften/Parser/PayloadParsers/DiscoInfoParser.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef SWIFTEN_DiscoInfoParser_H
-#define SWIFTEN_DiscoInfoParser_H
-
-#include "Swiften/Elements/DiscoInfo.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class DiscoInfoParser : public GenericPayloadParser<DiscoInfo> {
-		public:
-			DiscoInfoParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			enum Level { 
-				TopLevel = 0, 
-				PayloadLevel = 1
-			};
-			int level_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/DiscoInfoParserFactory.h b/Swiften/Parser/PayloadParsers/DiscoInfoParserFactory.h
deleted file mode 100644
index ef1c31c..0000000
--- a/Swiften/Parser/PayloadParsers/DiscoInfoParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_DiscoInfoParserFactory_H
-#define SWIFTEN_DiscoInfoParserFactory_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/DiscoInfoParser.h"
-
-namespace Swift {
-	class DiscoInfoParserFactory : public GenericPayloadParserFactory<DiscoInfoParser> {
-		public:
-			DiscoInfoParserFactory() : GenericPayloadParserFactory<DiscoInfoParser>("query", "http://jabber.org/protocol/disco#info") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/ErrorParser.cpp b/Swiften/Parser/PayloadParsers/ErrorParser.cpp
deleted file mode 100644
index ae85265..0000000
--- a/Swiften/Parser/PayloadParsers/ErrorParser.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/ErrorParser.h"
-
-namespace Swift {
-
-ErrorParser::ErrorParser() : level_(TopLevel) {
-}
-
-void ErrorParser::handleStartElement(const String&, const String&, const AttributeMap& attributes) {
-	if (level_ == TopLevel) {
-		String type = attributes.getAttribute("type");
-		if (type == "continue") {
-			getPayloadInternal()->setType(ErrorPayload::Continue);
-		}
-		else if (type == "modify") {
-			getPayloadInternal()->setType(ErrorPayload::Modify);
-		}
-		else if (type == "auth") {
-			getPayloadInternal()->setType(ErrorPayload::Auth);
-		}
-		else if (type == "wait") {
-			getPayloadInternal()->setType(ErrorPayload::Wait);
-		}
-		else {
-			getPayloadInternal()->setType(ErrorPayload::Cancel);
-		}
-	}
-	++level_;
-}
-
-void ErrorParser::handleEndElement(const String& element, const String&) {
-	--level_;
-	if (level_ == PayloadLevel) {
-		if (element == "text") {
-			getPayloadInternal()->setText(currentText_);
-		}
-		else if (element == "bad-request") {
-			getPayloadInternal()->setCondition(ErrorPayload::BadRequest);
-		}
-		else if (element == "conflict") {
-			getPayloadInternal()->setCondition(ErrorPayload::Conflict);
-		}
-		else if (element == "feature-not-implemented") {
-			getPayloadInternal()->setCondition(ErrorPayload::FeatureNotImplemented);
-		}
-		else if (element == "forbidden") {
-			getPayloadInternal()->setCondition(ErrorPayload::Forbidden);
-		}
-		else if (element == "gone") {
-			getPayloadInternal()->setCondition(ErrorPayload::Gone);
-		}
-		else if (element == "internal-server-error") {
-			getPayloadInternal()->setCondition(ErrorPayload::InternalServerError);
-		}
-		else if (element == "item-not-found") {
-			getPayloadInternal()->setCondition(ErrorPayload::ItemNotFound);
-		}
-		else if (element == "jid-malformed") {
-			getPayloadInternal()->setCondition(ErrorPayload::JIDMalformed);
-		}
-		else if (element == "not-acceptable") {
-			getPayloadInternal()->setCondition(ErrorPayload::NotAcceptable);
-		}
-		else if (element == "not-allowed") {
-			getPayloadInternal()->setCondition(ErrorPayload::NotAllowed);
-		}
-		else if (element == "not-authorized") {
-			getPayloadInternal()->setCondition(ErrorPayload::NotAuthorized);
-		}
-		else if (element == "payment-required") {
-			getPayloadInternal()->setCondition(ErrorPayload::PaymentRequired);
-		}
-		else if (element == "recipient-unavailable") {
-			getPayloadInternal()->setCondition(ErrorPayload::RecipientUnavailable);
-		}
-		else if (element == "redirect") {
-			getPayloadInternal()->setCondition(ErrorPayload::Redirect);
-		}
-		else if (element == "registration-required") {
-			getPayloadInternal()->setCondition(ErrorPayload::RegistrationRequired);
-		}
-		else if (element == "remote-server-not-found") {
-			getPayloadInternal()->setCondition(ErrorPayload::RemoteServerNotFound);
-		}
-		else if (element == "remote-server-timeout") {
-			getPayloadInternal()->setCondition(ErrorPayload::RemoteServerTimeout);
-		}
-		else if (element == "resource-constraint") {
-			getPayloadInternal()->setCondition(ErrorPayload::ResourceConstraint);
-		}
-		else if (element == "service-unavailable") {
-			getPayloadInternal()->setCondition(ErrorPayload::ServiceUnavailable);
-		}
-		else if (element == "subscription-required") {
-			getPayloadInternal()->setCondition(ErrorPayload::SubscriptionRequired);
-		}
-		else if (element == "unexpected-request") {
-			getPayloadInternal()->setCondition(ErrorPayload::UnexpectedRequest);
-		}
-		else {
-			getPayloadInternal()->setCondition(ErrorPayload::UndefinedCondition);
-		}
-	}
-}
-
-void ErrorParser::handleCharacterData(const String& data) {
-	currentText_ += data;
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/ErrorParser.h b/Swiften/Parser/PayloadParsers/ErrorParser.h
deleted file mode 100644
index 17b78b9..0000000
--- a/Swiften/Parser/PayloadParsers/ErrorParser.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef SWIFTEN_ErrorParser_H
-#define SWIFTEN_ErrorParser_H
-
-#include "Swiften/Elements/ErrorPayload.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class ErrorParser : public GenericPayloadParser<ErrorPayload> {
-		public:
-			ErrorParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			enum Level { 
-				TopLevel = 0, 
-				PayloadLevel = 1
-			};
-			int level_;
-			String currentText_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/ErrorParserFactory.h b/Swiften/Parser/PayloadParsers/ErrorParserFactory.h
deleted file mode 100644
index 36d1f55..0000000
--- a/Swiften/Parser/PayloadParsers/ErrorParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_ErrorParserFactory_H
-#define SWIFTEN_ErrorParserFactory_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/ErrorParser.h"
-
-namespace Swift {
-	class ErrorParserFactory : public GenericPayloadParserFactory<ErrorParser> {
-		public:
-			ErrorParserFactory() : GenericPayloadParserFactory<ErrorParser>("error") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp b/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp
deleted file mode 100644
index 0857f64..0000000
--- a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h"
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-#include "Swiften/Parser/PayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/ErrorParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/BodyParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/ChatStateParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/PriorityParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/ResourceBindParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/StartSessionParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/StatusParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/StatusShowParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/RosterParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/SoftwareVersionParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/StorageParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/DiscoInfoParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/VCardUpdateParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/VCardParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h"
-
-using namespace boost;
-
-namespace Swift {
-
-FullPayloadParserFactoryCollection::FullPayloadParserFactoryCollection() {
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new StatusParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new StatusShowParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new BodyParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new PriorityParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new ErrorParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new SoftwareVersionParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new StorageParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new RosterParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new DiscoInfoParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new ResourceBindParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new StartSessionParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new SecurityLabelParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new SecurityLabelsCatalogParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new VCardUpdateParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new VCardParserFactory()));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new PrivateStorageParserFactory(this)));
-	factories_.push_back(shared_ptr<PayloadParserFactory>(new ChatStateParserFactory()));
-	foreach(shared_ptr<PayloadParserFactory> factory, factories_) {
-		addFactory(factory.get());
-	}
-	defaultFactory_ = new RawXMLPayloadParserFactory();
-	setDefaultFactory(defaultFactory_);
-}
-
-FullPayloadParserFactoryCollection::~FullPayloadParserFactoryCollection() {
-	setDefaultFactory(NULL);
-	delete defaultFactory_;
-	foreach(shared_ptr<PayloadParserFactory> factory, factories_) {
-		removeFactory(factory.get());
-	}
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h b/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h
deleted file mode 100644
index 82e5a56..0000000
--- a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <vector>
-
-#include "Swiften/Parser/PayloadParserFactoryCollection.h"
-#include "Swiften/Parser/PayloadParserFactory.h"
-
-namespace Swift {
-	class FullPayloadParserFactoryCollection : public PayloadParserFactoryCollection {
-		public:
-			FullPayloadParserFactoryCollection();
-			~FullPayloadParserFactoryCollection();
-
-		private:
-			std::vector< boost::shared_ptr<PayloadParserFactory> > factories_;
-			PayloadParserFactory* defaultFactory_;
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/PriorityParser.cpp b/Swiften/Parser/PayloadParsers/PriorityParser.cpp
deleted file mode 100644
index 3dcca51..0000000
--- a/Swiften/Parser/PayloadParsers/PriorityParser.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/PriorityParser.h"
-
-#include <boost/lexical_cast.hpp>
-
-namespace Swift {
-
-PriorityParser::PriorityParser() : level_(0) {
-}
-
-void PriorityParser::handleStartElement(const String&, const String&, const AttributeMap&) {
-	++level_;
-}
-
-void PriorityParser::handleEndElement(const String&, const String&) {
-	--level_;
-	if (level_ == 0) {
-		getPayloadInternal()->setPriority(boost::lexical_cast<int>(text_));
-	}
-}
-
-void PriorityParser::handleCharacterData(const String& data) {
-	text_ += data;
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/PriorityParser.h b/Swiften/Parser/PayloadParsers/PriorityParser.h
deleted file mode 100644
index 7f3836f..0000000
--- a/Swiften/Parser/PayloadParsers/PriorityParser.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_PriorityParser_H
-#define SWIFTEN_PriorityParser_H
-
-#include "Swiften/Elements/Priority.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class PriorityParser : public GenericPayloadParser<Priority> {
-		public:
-			PriorityParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			int level_;
-			String text_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/PriorityParserFactory.h b/Swiften/Parser/PayloadParsers/PriorityParserFactory.h
deleted file mode 100644
index 5386326..0000000
--- a/Swiften/Parser/PayloadParsers/PriorityParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_PriorityParserFactory_H
-#define SWIFTEN_PriorityParserFactory_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/PriorityParser.h"
-
-namespace Swift {
-	class PriorityParserFactory : public GenericPayloadParserFactory<PriorityParser> {
-		public:
-			PriorityParserFactory() : GenericPayloadParserFactory<PriorityParser>("priority") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/PrivateStorageParser.cpp b/Swiften/Parser/PayloadParsers/PrivateStorageParser.cpp
deleted file mode 100644
index 5c3af26..0000000
--- a/Swiften/Parser/PayloadParsers/PrivateStorageParser.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/PrivateStorageParser.h"
-#include "Swiften/Parser/PayloadParserFactoryCollection.h"
-#include "Swiften/Parser/PayloadParserFactory.h"
-
-namespace Swift {
-
-PrivateStorageParser::PrivateStorageParser(PayloadParserFactoryCollection* factories) : factories(factories), level(0) {
-}
-
-void PrivateStorageParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) {
-	if (level == 1) {
-		PayloadParserFactory* payloadParserFactory = factories->getPayloadParserFactory(element, ns, attributes);
-		if (payloadParserFactory) {
-			currentPayloadParser.reset(payloadParserFactory->createPayloadParser());
-		}
-	}
-
-	if (level >= 1 && currentPayloadParser.get()) {
-		currentPayloadParser->handleStartElement(element, ns, attributes);
-	}
-	++level;
-}
-
-void PrivateStorageParser::handleEndElement(const String& element, const String& ns) {
-	--level;
-	if (currentPayloadParser.get()) {
-		if (level >= 1) {
-			currentPayloadParser->handleEndElement(element, ns);
-		}
-
-		if (level == 1) {
-			getPayloadInternal()->setPayload(currentPayloadParser->getPayload());
-		}
-	}
-}
-
-void PrivateStorageParser::handleCharacterData(const String& data) {
-	if (level > 1 && currentPayloadParser.get()) {
-		currentPayloadParser->handleCharacterData(data);
-	}
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/PrivateStorageParser.h b/Swiften/Parser/PayloadParsers/PrivateStorageParser.h
deleted file mode 100644
index fae0f10..0000000
--- a/Swiften/Parser/PayloadParsers/PrivateStorageParser.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-
-#include <boost/optional.hpp>
-
-#include "Swiften/Elements/PrivateStorage.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class PayloadParserFactoryCollection;
-
-	class PrivateStorageParser : public GenericPayloadParser<PrivateStorage> {
-		public:
-			PrivateStorageParser(PayloadParserFactoryCollection* factories);
-
-		private:
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			PayloadParserFactoryCollection* factories;
-			int level;
-			std::auto_ptr<PayloadParser> currentPayloadParser;
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h b/Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h
deleted file mode 100644
index 4d9c02b..0000000
--- a/Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-
-#include "Swiften/Parser/PayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/PrivateStorageParser.h"
-
-namespace Swift {
-	class PayloadParserFactoryCollection;
-
-	class PrivateStorageParserFactory : public PayloadParserFactory {
-		public:
-			PrivateStorageParserFactory(PayloadParserFactoryCollection* factories) : factories(factories) {
-			}
-
-			virtual bool canParse(const String& element, const String& ns, const AttributeMap&) const {
-				return element == "query" && ns == "jabber:iq:private";
-			}
-
-			virtual PayloadParser* createPayloadParser() {
-				return new PrivateStorageParser(factories);
-			}
-
-		private:
-			PayloadParserFactoryCollection* factories;
-			
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.cpp b/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.cpp
deleted file mode 100644
index c49af3e..0000000
--- a/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h"
-#include "Swiften/Parser/SerializingParser.h"
-
-namespace Swift {
-
-RawXMLPayloadParser::RawXMLPayloadParser() : level_(0) {
-}
-
-void RawXMLPayloadParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) {
-	++level_;
-	serializingParser_.handleStartElement(element, ns, attributes);
-}
-
-void RawXMLPayloadParser::handleEndElement(const String& element, const String& ns) {
-	serializingParser_.handleEndElement(element, ns);
-	--level_;
-	if (level_ == 0) {
-		getPayloadInternal()->setRawXML(serializingParser_.getResult());
-	}
-}
-
-void RawXMLPayloadParser::handleCharacterData(const String& data) {
-	serializingParser_.handleCharacterData(data);
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h b/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h
deleted file mode 100644
index f636486..0000000
--- a/Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#pragma once
-
-#include "Swiften/Elements/RawXMLPayload.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-#include "Swiften/Parser/SerializingParser.h"
-
-namespace Swift {
-	class SerializingParser;
-
-	class RawXMLPayloadParser : public GenericPayloadParser<RawXMLPayload> {
-		public:
-			RawXMLPayloadParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			int level_;
-			SerializingParser serializingParser_;
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h b/Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h
deleted file mode 100644
index 46b1183..0000000
--- a/Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include "Swiften/Parser/PayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class RawXMLPayloadParserFactory : public PayloadParserFactory {
-		public:
-			RawXMLPayloadParserFactory() {}
-
-			virtual bool canParse(const String&, const String&, const AttributeMap&) const {
-				return true;
-			}
-
-			virtual PayloadParser* createPayloadParser() {
-				return new RawXMLPayloadParser();
-			}
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/ResourceBindParser.cpp b/Swiften/Parser/PayloadParsers/ResourceBindParser.cpp
deleted file mode 100644
index c5ca787..0000000
--- a/Swiften/Parser/PayloadParsers/ResourceBindParser.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/ResourceBindParser.h"
-
-namespace Swift {
-
-ResourceBindParser::ResourceBindParser() : level_(0), inJID_(false), inResource_(false) {
-}
-
-void ResourceBindParser::handleStartElement(const String& element, const String&, const AttributeMap&) {
-	if (level_ == 1) {
-		text_ = "";
-		if (element == "resource") {
-			inResource_ = true;
-		}
-		if (element == "jid") {
-			inJID_ = true;
-		}
-	}
-	++level_;
-}
-
-void ResourceBindParser::handleEndElement(const String&, const String&) {
-	--level_;
-	if (level_ == 1) {
-		if (inJID_) {
-			getPayloadInternal()->setJID(JID(text_));
-		}
-		else if (inResource_) {
-			getPayloadInternal()->setResource(text_);
-		}
-	}
-}
-
-void ResourceBindParser::handleCharacterData(const String& data) {
-	text_ += data;
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/ResourceBindParser.h b/Swiften/Parser/PayloadParsers/ResourceBindParser.h
deleted file mode 100644
index 1341140..0000000
--- a/Swiften/Parser/PayloadParsers/ResourceBindParser.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef SWIFTEN_ResourceBindParser_H
-#define SWIFTEN_ResourceBindParser_H
-
-#include "Swiften/Elements/ResourceBind.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class ResourceBindParser : public GenericPayloadParser<ResourceBind> {
-		public:
-			ResourceBindParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			int level_;
-			bool inJID_;
-			bool inResource_;
-			String text_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/ResourceBindParserFactory.h b/Swiften/Parser/PayloadParsers/ResourceBindParserFactory.h
deleted file mode 100644
index 54af9c9..0000000
--- a/Swiften/Parser/PayloadParsers/ResourceBindParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_ResourceBindParserFactory_H
-#define SWIFTEN_ResourceBindParserFactory_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/ResourceBindParser.h"
-
-namespace Swift {
-	class ResourceBindParserFactory : public GenericPayloadParserFactory<ResourceBindParser> {
-		public:
-			ResourceBindParserFactory() : GenericPayloadParserFactory<ResourceBindParser>("bind", "urn:ietf:params:xml:ns:xmpp-bind") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/RosterParser.cpp b/Swiften/Parser/PayloadParsers/RosterParser.cpp
deleted file mode 100644
index 0c4e99b..0000000
--- a/Swiften/Parser/PayloadParsers/RosterParser.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/RosterParser.h"
-
-namespace Swift {
-
-RosterParser::RosterParser() : level_(TopLevel) {
-}
-
-void RosterParser::handleStartElement(const String& element, const String&, const AttributeMap& attributes) {
-	if (level_ == PayloadLevel) {
-		if (element == "item") {
-			inItem_ = true;
-			currentItem_ = RosterItemPayload();
-
-			currentItem_.setJID(JID(attributes.getAttribute("jid")));
-			currentItem_.setName(attributes.getAttribute("name"));
-
-			String subscription = attributes.getAttribute("subscription");
-			if (subscription == "both") {
-				currentItem_.setSubscription(RosterItemPayload::Both);
-			}
-			else if (subscription == "to") {
-				currentItem_.setSubscription(RosterItemPayload::To);
-			}
-			else if (subscription == "from") {
-				currentItem_.setSubscription(RosterItemPayload::From);
-			}
-			else if (subscription == "remove") {
-				currentItem_.setSubscription(RosterItemPayload::Remove);
-			}
-			else {
-				currentItem_.setSubscription(RosterItemPayload::None);
-			}
-
-			if (attributes.getAttribute("ask") == "subscribe") {
-				currentItem_.setSubscriptionRequested();
-			}
-		}
-	}
-	else if (level_ == ItemLevel) {
-		if (element == "group") {
-			currentText_ = "";
-		}
-	}
-	++level_;
-}
-
-void RosterParser::handleEndElement(const String& element, const String&) {
-	--level_;
-	if (level_ == PayloadLevel) {
-		if (inItem_) {
-			getPayloadInternal()->addItem(currentItem_);
-			inItem_ = false;
-		}
-	}
-	else if (level_ == ItemLevel) {
-		if (element == "group") {
-			currentItem_.addGroup(currentText_);
-		}
-	}
-}
-
-void RosterParser::handleCharacterData(const String& data) {
-	currentText_ += data;
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/RosterParser.h b/Swiften/Parser/PayloadParsers/RosterParser.h
deleted file mode 100644
index bd8186a..0000000
--- a/Swiften/Parser/PayloadParsers/RosterParser.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef SWIFTEN_RosterParser_H
-#define SWIFTEN_RosterParser_H
-
-#include "Swiften/Elements/RosterPayload.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class RosterParser : public GenericPayloadParser<RosterPayload> {
-		public:
-			RosterParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			enum Level { 
-				TopLevel = 0, 
-				PayloadLevel = 1,
-				ItemLevel = 2
-			};
-			int level_;
-			bool inItem_;
-			RosterItemPayload currentItem_;
-			String currentText_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/RosterParserFactory.h b/Swiften/Parser/PayloadParsers/RosterParserFactory.h
deleted file mode 100644
index f51b3ab..0000000
--- a/Swiften/Parser/PayloadParsers/RosterParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_RosterParserFactory_H
-#define SWIFTEN_RosterParserFactory_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/RosterParser.h"
-
-namespace Swift {
-	class RosterParserFactory : public GenericPayloadParserFactory<RosterParser> {
-		public:
-			RosterParserFactory() : GenericPayloadParserFactory<RosterParser>("query", "jabber:iq:roster") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelParser.cpp b/Swiften/Parser/PayloadParsers/SecurityLabelParser.cpp
deleted file mode 100644
index 7e65575..0000000
--- a/Swiften/Parser/PayloadParsers/SecurityLabelParser.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/SecurityLabelParser.h"
-#include "Swiften/Parser/SerializingParser.h"
-
-namespace Swift {
-
-SecurityLabelParser::SecurityLabelParser() : level_(TopLevel), labelParser_(0) {
-}
-
-void SecurityLabelParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) {
-	++level_;
-	if (level_ == DisplayMarkingOrLabelLevel) {
-		if (element == "displaymarking") {
-			currentText_ = "";
-			getPayloadInternal()->setBackgroundColor(attributes.getAttribute("bgcolor"));
-			getPayloadInternal()->setForegroundColor(attributes.getAttribute("fgcolor"));
-		}
-		else if (element == "label" || element == "equivalentlabel") {
-			assert(!labelParser_);
-			labelParser_ = new SerializingParser();
-		}
-	}
-	else if (level_ >= SecurityLabelLevel && labelParser_) {
-		labelParser_->handleStartElement(element, ns, attributes);
-	}
-}
-
-void SecurityLabelParser::handleEndElement(const String& element, const String& ns) {
-	if (level_ == DisplayMarkingOrLabelLevel) {
-		if (element == "displaymarking") {
-			getPayloadInternal()->setDisplayMarking(currentText_);
-		}
-		else if (labelParser_) {
-			if (element == "label") {
-				getPayloadInternal()->setLabel(labelParser_->getResult());
-			}
-			else {
-				getPayloadInternal()->addEquivalentLabel(labelParser_->getResult());
-			}
-			delete labelParser_;
-			labelParser_ = 0;
-		}
-	}
-	else if (labelParser_ && level_ >= SecurityLabelLevel) {
-		labelParser_->handleEndElement(element, ns);
-	}
-	--level_;
-
-}
-
-void SecurityLabelParser::handleCharacterData(const String& data) {
-	if (labelParser_) {
-		labelParser_->handleCharacterData(data);
-	}
-	else {
-		currentText_ += data;
-	}
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelParser.h b/Swiften/Parser/PayloadParsers/SecurityLabelParser.h
deleted file mode 100644
index 70040d9..0000000
--- a/Swiften/Parser/PayloadParsers/SecurityLabelParser.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef SWIFTEN_SecurityLabelParser_H
-#define SWIFTEN_SecurityLabelParser_H
-
-#include "Swiften/Elements/SecurityLabel.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class SerializingParser;
-
-	class SecurityLabelParser : public GenericPayloadParser<SecurityLabel> {
-		public:
-			SecurityLabelParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			enum Level { 
-				TopLevel = 0, 
-				PayloadLevel = 1,
-				DisplayMarkingOrLabelLevel = 2,
-				SecurityLabelLevel = 3
-			};
-			int level_;
-			SerializingParser* labelParser_;
-			String currentText_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h b/Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h
deleted file mode 100644
index 0341fbb..0000000
--- a/Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_SecurityLabelParserFactory_H
-#define SWIFTEN_SecurityLabelParserFactory_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/SecurityLabelParser.h"
-
-namespace Swift {
-	class SecurityLabelParserFactory : public GenericPayloadParserFactory<SecurityLabelParser> {
-		public:
-			SecurityLabelParserFactory() : GenericPayloadParserFactory<SecurityLabelParser>("securitylabel", "urn:xmpp:sec-label:0") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.cpp b/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.cpp
deleted file mode 100644
index e4da756..0000000
--- a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h"
-#include "Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/SecurityLabelParser.h"
-
-namespace Swift {
-
-SecurityLabelsCatalogParser::SecurityLabelsCatalogParser() : level_(TopLevel), labelParser_(0) {
-	labelParserFactory_ = new SecurityLabelParserFactory();
-}
-
-SecurityLabelsCatalogParser::~SecurityLabelsCatalogParser() {
-	delete labelParserFactory_;
-}
-
-void SecurityLabelsCatalogParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) {
-	++level_;
-	if (level_ == PayloadLevel) {
-		getPayloadInternal()->setTo(JID(attributes.getAttribute("to")));
-		getPayloadInternal()->setName(attributes.getAttribute("name"));
-		getPayloadInternal()->setDescription(attributes.getAttribute("desc"));
-	}
-	else if (level_ == LabelLevel) {
-		assert(!labelParser_);
-		if (labelParserFactory_->canParse(element, ns, attributes)) {
-			labelParser_ = dynamic_cast<SecurityLabelParser*>(labelParserFactory_->createPayloadParser());
-			assert(labelParser_);
-		}
-	}
-
-	if (labelParser_) {
-		labelParser_->handleStartElement(element, ns, attributes);
-	}
-}
-
-void SecurityLabelsCatalogParser::handleEndElement(const String& element, const String& ns) {
-	if (labelParser_) {
-		labelParser_->handleEndElement(element, ns);
-	}
-	if (level_ == LabelLevel && labelParser_) {
-		SecurityLabel* label = dynamic_cast<SecurityLabel*>(labelParser_->getPayload().get());
-		assert(label);
-		getPayloadInternal()->addLabel(SecurityLabel(*label));
-		delete labelParser_;
-		labelParser_ = 0;
-	}
-	--level_;
-}
-
-void SecurityLabelsCatalogParser::handleCharacterData(const String& data) {
-	if (labelParser_) {
-		labelParser_->handleCharacterData(data);
-	}
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h b/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h
deleted file mode 100644
index 799e43a..0000000
--- a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef SWIFTEN_SecurityLabelsCatalogParser_H
-#define SWIFTEN_SecurityLabelsCatalogParser_H
-
-#include "Swiften/Elements/SecurityLabelsCatalog.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class SecurityLabelParserFactory;
-	class SecurityLabelParser;
-
-	class SecurityLabelsCatalogParser : public GenericPayloadParser<SecurityLabelsCatalog> {
-		public:
-			SecurityLabelsCatalogParser();
-			~SecurityLabelsCatalogParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			enum Level { 
-				TopLevel = 0, 
-				PayloadLevel = 1,
-				LabelLevel = 2
-			};
-			int level_;
-			SecurityLabelParserFactory* labelParserFactory_;
-			SecurityLabelParser* labelParser_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParserFactory.h b/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParserFactory.h
deleted file mode 100644
index 99a310b..0000000
--- a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_SecurityLabelsCatalogParserFactory_H
-#define SWIFTEN_SecurityLabelsCatalogParserFactory_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h"
-
-namespace Swift {
-	class SecurityLabelsCatalogParserFactory : public GenericPayloadParserFactory<SecurityLabelsCatalogParser> {
-		public:
-			SecurityLabelsCatalogParserFactory() : GenericPayloadParserFactory<SecurityLabelsCatalogParser>("catalog", "urn:xmpp:sec-label:catalog:0") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/SoftwareVersionParser.cpp b/Swiften/Parser/PayloadParsers/SoftwareVersionParser.cpp
deleted file mode 100644
index dae9f94..0000000
--- a/Swiften/Parser/PayloadParsers/SoftwareVersionParser.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/SoftwareVersionParser.h"
-
-namespace Swift {
-
-SoftwareVersionParser::SoftwareVersionParser() : level_(TopLevel) {
-}
-
-void SoftwareVersionParser::handleStartElement(const String&, const String&, const AttributeMap&) {
-	++level_;
-}
-
-void SoftwareVersionParser::handleEndElement(const String& element, const String&) {
-	--level_;
-	if (level_ == PayloadLevel) {
-		if (element == "name") {
-			getPayloadInternal()->setName(currentText_);
-		}
-		else if (element == "version") {
-			getPayloadInternal()->setVersion(currentText_);
-		}
-		else if (element == "os") {
-			getPayloadInternal()->setOS(currentText_);
-		}
-		currentText_ = "";
-	}
-}
-
-void SoftwareVersionParser::handleCharacterData(const String& data) {
-	currentText_ += data;
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/SoftwareVersionParser.h b/Swiften/Parser/PayloadParsers/SoftwareVersionParser.h
deleted file mode 100644
index bfffc90..0000000
--- a/Swiften/Parser/PayloadParsers/SoftwareVersionParser.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef SWIFTEN_SoftwareVersionParser_H
-#define SWIFTEN_SoftwareVersionParser_H
-
-#include "Swiften/Elements/SoftwareVersion.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class SoftwareVersionParser : public GenericPayloadParser<SoftwareVersion> {
-		public:
-			SoftwareVersionParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			enum Level { 
-				TopLevel = 0, 
-				PayloadLevel = 1
-			};
-			int level_;
-			String currentText_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/SoftwareVersionParserFactory.h b/Swiften/Parser/PayloadParsers/SoftwareVersionParserFactory.h
deleted file mode 100644
index cb33e0b..0000000
--- a/Swiften/Parser/PayloadParsers/SoftwareVersionParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_SoftwareVersionParserFactory_H
-#define SWIFTEN_SoftwareVersionParserFactory_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/SoftwareVersionParser.h"
-
-namespace Swift {
-	class SoftwareVersionParserFactory : public GenericPayloadParserFactory<SoftwareVersionParser> {
-		public:
-			SoftwareVersionParserFactory() : GenericPayloadParserFactory<SoftwareVersionParser>("query", "jabber:iq:version") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/StartSessionParser.h b/Swiften/Parser/PayloadParsers/StartSessionParser.h
deleted file mode 100644
index 059d036..0000000
--- a/Swiften/Parser/PayloadParsers/StartSessionParser.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef SWIFTEN_StartSessionParser_H
-#define SWIFTEN_StartSessionParser_H
-
-#include "Swiften/Elements/StartSession.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class StartSessionParser : public GenericPayloadParser<StartSession> {
-		public:
-			StartSessionParser() {}
-
-			virtual void handleStartElement(const String&, const String&, const AttributeMap&) {}
-			virtual void handleEndElement(const String&, const String&) {}
-			virtual void handleCharacterData(const String&) {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/StartSessionParserFactory.h b/Swiften/Parser/PayloadParsers/StartSessionParserFactory.h
deleted file mode 100644
index 5eed749..0000000
--- a/Swiften/Parser/PayloadParsers/StartSessionParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_StartSessionParserFactory_H
-#define SWIFTEN_StartSessionParserFactory_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/StartSessionParser.h"
-
-namespace Swift {
-	class StartSessionParserFactory : public GenericPayloadParserFactory<StartSessionParser> {
-		public:
-			StartSessionParserFactory() : GenericPayloadParserFactory<StartSessionParser>("session", "urn:ietf:params:xml:ns:xmpp-session") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/StatusParser.cpp b/Swiften/Parser/PayloadParsers/StatusParser.cpp
deleted file mode 100644
index c7771b9..0000000
--- a/Swiften/Parser/PayloadParsers/StatusParser.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/StatusParser.h"
-
-namespace Swift {
-
-StatusParser::StatusParser() : level_(0) {
-}
-
-void StatusParser::handleStartElement(const String&, const String&, const AttributeMap&) {
-	++level_;
-}
-
-void StatusParser::handleEndElement(const String&, const String&) {
-	--level_;
-	if (level_ == 0) {
-		getPayloadInternal()->setText(text_);
-	}
-}
-
-void StatusParser::handleCharacterData(const String& data) {
-	text_ += data;
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/StatusParser.h b/Swiften/Parser/PayloadParsers/StatusParser.h
deleted file mode 100644
index 36ae094..0000000
--- a/Swiften/Parser/PayloadParsers/StatusParser.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_StatusParser_H
-#define SWIFTEN_StatusParser_H
-
-#include "Swiften/Elements/Status.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class StatusParser : public GenericPayloadParser<Status> {
-		public:
-			StatusParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			int level_;
-			String text_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/StatusParserFactory.h b/Swiften/Parser/PayloadParsers/StatusParserFactory.h
deleted file mode 100644
index 72af5a9..0000000
--- a/Swiften/Parser/PayloadParsers/StatusParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_StatusParserFactory_H
-#define SWIFTEN_StatusParserFactory_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/StatusParser.h"
-
-namespace Swift {
-	class StatusParserFactory : public GenericPayloadParserFactory<StatusParser> {
-		public:
-			StatusParserFactory() : GenericPayloadParserFactory<StatusParser>("status") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/StatusShowParser.cpp b/Swiften/Parser/PayloadParsers/StatusShowParser.cpp
deleted file mode 100644
index c3719af..0000000
--- a/Swiften/Parser/PayloadParsers/StatusShowParser.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/StatusShowParser.h"
-
-namespace Swift {
-
-StatusShowParser::StatusShowParser() : level_(0) {
-}
-
-void StatusShowParser::handleStartElement(const String&, const String&, const AttributeMap&) {
-	++level_;
-}
-
-void StatusShowParser::handleEndElement(const String&, const String&) {
-	--level_;
-	if (level_ == 0) {
-		if (text_ == "away") {
-			getPayloadInternal()->setType(StatusShow::Away);
-		}
-		else if (text_ == "chat") {
-			getPayloadInternal()->setType(StatusShow::FFC);
-		}
-		else if (text_ == "xa") {
-			getPayloadInternal()->setType(StatusShow::XA);
-		}
-		else if (text_ == "dnd") {
-			getPayloadInternal()->setType(StatusShow::DND);
-		}
-		else {
-			getPayloadInternal()->setType(StatusShow::Online);
-		}
-	}
-}
-
-void StatusShowParser::handleCharacterData(const String& data) {
-	text_ += data;
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/StatusShowParser.h b/Swiften/Parser/PayloadParsers/StatusShowParser.h
deleted file mode 100644
index a8ddb09..0000000
--- a/Swiften/Parser/PayloadParsers/StatusShowParser.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_StatusShowParser_H
-#define SWIFTEN_StatusShowParser_H
-
-#include "Swiften/Elements/StatusShow.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class StatusShowParser : public GenericPayloadParser<StatusShow> {
-		public:
-			StatusShowParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			int level_;
-			String text_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/StatusShowParserFactory.h b/Swiften/Parser/PayloadParsers/StatusShowParserFactory.h
deleted file mode 100644
index 2ddc190..0000000
--- a/Swiften/Parser/PayloadParsers/StatusShowParserFactory.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_StatusShowParserFactory_H
-#define SWIFTEN_StatusShowParserFactory_H
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/StatusShowParser.h"
-
-namespace Swift {
-	class StatusShowParserFactory : public GenericPayloadParserFactory<StatusShowParser> {
-		public:
-			StatusShowParserFactory() : GenericPayloadParserFactory<StatusShowParser>("show") {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PayloadParsers/StorageParser.cpp b/Swiften/Parser/PayloadParsers/StorageParser.cpp
deleted file mode 100644
index 3eab15e..0000000
--- a/Swiften/Parser/PayloadParsers/StorageParser.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/StorageParser.h"
-
-#include <cassert>
-
-namespace Swift {
-
-StorageParser::StorageParser() : level(TopLevel) {
-}
-
-void StorageParser::handleStartElement(const String& element, const String&, const AttributeMap& attributes) {
-	if (level == BookmarkLevel) {
-		if (element == "conference") {
-			assert(!conference);
-			conference = Storage::Conference();
-			conference->autoJoin = attributes.getBoolAttribute("autojoin", false);
-			conference->jid = JID(attributes.getAttribute("jid"));
-			conference->name = attributes.getAttribute("name");
-		}
-	}
-	else if (level == DetailLevel) {
-		currentText = "";
-	}
-	++level;
-}
-
-void StorageParser::handleEndElement(const String& element, const String&) {
-	--level;
-	if (level == BookmarkLevel) {
-		if (element == "conference") {
-			assert(conference);
-			getPayloadInternal()->addConference(*conference);
-			conference.reset();
-		}
-	}
-	else if (level == DetailLevel && conference) {
-		if (element == "nick") {
-			conference->nick = currentText;
-		}
-		else if (element == "password") {
-			conference->password = currentText;
-		}
-	}
-}
-
-void StorageParser::handleCharacterData(const String& data) {
-	currentText += data;
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/StorageParser.h b/Swiften/Parser/PayloadParsers/StorageParser.h
deleted file mode 100644
index ad0ab4d..0000000
--- a/Swiften/Parser/PayloadParsers/StorageParser.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#pragma once
-
-#include <boost/optional.hpp>
-
-#include "Swiften/Elements/Storage.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class StorageParser : public GenericPayloadParser<Storage> {
-		public:
-			StorageParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			enum Level { 
-				TopLevel = 0, 
-				BookmarkLevel = 1,
-				DetailLevel = 2
-			};
-			int level;
-			String currentText;
-			boost::optional<Storage::Conference> conference;
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/StorageParserFactory.h b/Swiften/Parser/PayloadParsers/StorageParserFactory.h
deleted file mode 100644
index 147d178..0000000
--- a/Swiften/Parser/PayloadParsers/StorageParserFactory.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/StorageParser.h"
-
-namespace Swift {
-	class StorageParserFactory : public GenericPayloadParserFactory<StorageParser> {
-		public:
-			StorageParserFactory() : GenericPayloadParserFactory<StorageParser>("storage", "storage:bookmarks") {}
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/BodyParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/BodyParserTest.cpp
deleted file mode 100644
index 2fc6180..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/BodyParserTest.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/BodyParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class BodyParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(BodyParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		BodyParserTest() {}
-
-		void testParse() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse("<body>foo<baz>bar</baz>fum</body>"));
-
-			Body* payload = dynamic_cast<Body*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(String("foobarfum"), payload->getText());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(BodyParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/DiscoInfoParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/DiscoInfoParserTest.cpp
deleted file mode 100644
index 49b706e..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/DiscoInfoParserTest.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/DiscoInfoParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class DiscoInfoParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(DiscoInfoParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		DiscoInfoParserTest() {}
-
-		void testParse() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<query xmlns=\"http://jabber.org/protocol/disco#info\">"
-					"<identity name=\"Swift\" category=\"client\" type=\"pc\" xml:lang=\"en\"/>" 
-					"<identity name=\"Vlug\" category=\"client\" type=\"pc\" xml:lang=\"nl\"/>" 
-					"<feature var=\"foo-feature\"/>"
-					"<feature var=\"bar-feature\"/>"
-					"<feature var=\"baz-feature\"/>"
-				"</query>"));
-
-			DiscoInfo* payload = dynamic_cast<DiscoInfo*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(payload->getIdentities().size()));
-			CPPUNIT_ASSERT_EQUAL(String("Swift"), payload->getIdentities()[0].getName());
-			CPPUNIT_ASSERT_EQUAL(String("pc"), payload->getIdentities()[0].getType());
-			CPPUNIT_ASSERT_EQUAL(String("client"), payload->getIdentities()[0].getCategory());
-			CPPUNIT_ASSERT_EQUAL(String("en"), payload->getIdentities()[0].getLanguage());
-			CPPUNIT_ASSERT_EQUAL(String("Vlug"), payload->getIdentities()[1].getName());
-			CPPUNIT_ASSERT_EQUAL(String("pc"), payload->getIdentities()[1].getType());
-			CPPUNIT_ASSERT_EQUAL(String("client"), payload->getIdentities()[1].getCategory());
-			CPPUNIT_ASSERT_EQUAL(String("nl"), payload->getIdentities()[1].getLanguage());
-			CPPUNIT_ASSERT_EQUAL(3, static_cast<int>(payload->getFeatures().size()));
-			CPPUNIT_ASSERT_EQUAL(String("foo-feature"), payload->getFeatures()[0]);
-			CPPUNIT_ASSERT_EQUAL(String("bar-feature"), payload->getFeatures()[1]);
-			CPPUNIT_ASSERT_EQUAL(String("baz-feature"), payload->getFeatures()[2]);
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(DiscoInfoParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/ErrorParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/ErrorParserTest.cpp
deleted file mode 100644
index dcd3172..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/ErrorParserTest.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/ErrorParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class ErrorParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(ErrorParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		ErrorParserTest() {}
-
-		void testParse() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<error type=\"modify\">"
-					"<bad-request xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>"
-					"<text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">boo</text>"
-				"</error>"));
-
-			ErrorPayload* payload = dynamic_cast<ErrorPayload*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(ErrorPayload::BadRequest, payload->getCondition());
-			CPPUNIT_ASSERT_EQUAL(ErrorPayload::Modify, payload->getType());
-			CPPUNIT_ASSERT_EQUAL(String("boo"), payload->getText());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ErrorParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h b/Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h
deleted file mode 100644
index 20a5feb..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-
-#include "Swiften/Parser/UnitTest/ParserTester.h"
-#include "Swiften/Parser/PayloadParser.h"
-
-namespace Swift {
-	typedef ParserTester<PayloadParser> PayloadParserTester;
-}
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h b/Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h
deleted file mode 100644
index ac167cf..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#pragma once
-
-#include <cppunit/extensions/HelperMacros.h>
-
-#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h"
-#include "Swiften/Parser/XMLParser.h"
-#include "Swiften/Parser/XMLParserClient.h"
-#include "Swiften/Parser/PlatformXMLParserFactory.h"
-
-namespace Swift {
-	class PayloadsParserTester : public XMLParserClient {
-		public:
-			PayloadsParserTester() : level(0) {
-				xmlParser = PlatformXMLParserFactory().createXMLParser(this);
-			}
-
-			~PayloadsParserTester() {
-				delete xmlParser;
-			}
-
-			bool parse(const String& data) {
-				return xmlParser->parse(data);
-			}
-
-			virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) {
-				if (level == 0) {
-					CPPUNIT_ASSERT(!payloadParser.get());
-					PayloadParserFactory* payloadParserFactory = factories.getPayloadParserFactory(element, ns, attributes);
-					CPPUNIT_ASSERT(payloadParserFactory);
-					payloadParser.reset(payloadParserFactory->createPayloadParser());
-				}
-				payloadParser->handleStartElement(element, ns, attributes);
-				level++;
-			}
-
-			virtual void handleEndElement(const String& element, const String& ns) {
-				level--;
-				payloadParser->handleEndElement(element, ns);
-			}
-
-			virtual void handleCharacterData(const String& data) {
-				payloadParser->handleCharacterData(data);
-			}
-
-			boost::shared_ptr<Payload> getPayload() const {
-				return payloadParser->getPayload();
-			}
-
-		private:
-			XMLParser* xmlParser;
-			FullPayloadParserFactoryCollection factories;
-			std::auto_ptr<PayloadParser> payloadParser;
-			int level;
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/PriorityParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/PriorityParserTest.cpp
deleted file mode 100644
index acea437..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/PriorityParserTest.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/PriorityParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class PriorityParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(PriorityParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		PriorityParserTest() {}
-
-		void testParse() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse("<priority>-120</priority>"));
-
-			Priority* payload = dynamic_cast<Priority*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(-120, payload->getPriority());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(PriorityParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/PrivateStorageParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/PrivateStorageParserTest.cpp
deleted file mode 100644
index e820083..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/PrivateStorageParserTest.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Elements/Storage.h"
-#include "Swiften/Parser/PayloadParsers/PrivateStorageParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h"
-
-using namespace Swift;
-
-class PrivateStorageParserTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(PrivateStorageParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST(testParse_NoPayload);
-		CPPUNIT_TEST(testParse_MultiplePayloads);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		PrivateStorageParserTest() {}
-
-		void testParse() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<query xmlns='jabber:iq:private'>"
-					"<storage xmlns='storage:bookmarks'>"
-						"<conference name='Swift' jid='swift@rooms.swift.im'>"
-							"<nick>Alice</nick>"
-						"</conference>"
-					"</storage>"
-				"</query>"));
-
-			boost::shared_ptr<PrivateStorage> payload = boost::dynamic_pointer_cast<PrivateStorage>(parser.getPayload());
-			CPPUNIT_ASSERT(payload);
-			boost::shared_ptr<Storage> storage = boost::dynamic_pointer_cast<Storage>(payload->getPayload());
-			CPPUNIT_ASSERT(storage);
-			CPPUNIT_ASSERT_EQUAL(String("Alice"), storage->getConferences()[0].nick);
-			CPPUNIT_ASSERT_EQUAL(JID("swift@rooms.swift.im"), storage->getConferences()[0].jid);
-		}
-
-		void testParse_NoPayload() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse("<query xmlns='jabber:iq:private'/>"));
-
-			boost::shared_ptr<PrivateStorage> payload = boost::dynamic_pointer_cast<PrivateStorage>(parser.getPayload());
-			CPPUNIT_ASSERT(payload);
-			CPPUNIT_ASSERT(!payload->getPayload());
-		}
-
-		void testParse_MultiplePayloads() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<query xmlns='jabber:iq:private'>"
-					"<storage xmlns='storage:bookmarks'>"
-						"<conference name='Swift' jid='swift@rooms.swift.im'>"
-							"<nick>Alice</nick>"
-						"</conference>"
-					"</storage>"
-					"<storage xmlns='storage:bookmarks'>"
-						"<conference name='Swift' jid='swift@rooms.swift.im'>"
-							"<nick>Rabbit</nick>"
-						"</conference>"
-					"</storage>"
-				"</query>"));
-
-			boost::shared_ptr<PrivateStorage> payload = boost::dynamic_pointer_cast<PrivateStorage>(parser.getPayload());
-			CPPUNIT_ASSERT(payload);
-			boost::shared_ptr<Storage> storage = boost::dynamic_pointer_cast<Storage>(payload->getPayload());
-			CPPUNIT_ASSERT(storage);
-			CPPUNIT_ASSERT_EQUAL(String("Rabbit"), storage->getConferences()[0].nick);
-		}
-
-		void testParse_UnsupportedPayload() {
-			PayloadParserFactoryCollection factories;
-			PrivateStorageParser testling(&factories);
-			PayloadParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<query xmlns='jabber:iq:private'>"
-					"<foo>Bar</foo>"
-				"</query>"));
-
-			CPPUNIT_ASSERT(!boost::dynamic_pointer_cast<PrivateStorage>(testling.getPayload())->getPayload());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(PrivateStorageParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/RawXMLPayloadParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/RawXMLPayloadParserTest.cpp
deleted file mode 100644
index 81cc207..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/RawXMLPayloadParserTest.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadParserTester.h"
-
-using namespace Swift;
-
-class RawXMLPayloadParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(RawXMLPayloadParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		RawXMLPayloadParserTest() {}
-
-		void testParse() {
-			RawXMLPayloadParser testling;
-			PayloadParserTester parser(&testling);
-
-			String xml = 
-				"<foo foo-attr=\"foo-val\" xmlns=\"ns:foo\">"
-					"<bar bar-attr=\"bar-val\" xmlns=\"ns:bar\"/>"
-					"<baz baz-attr=\"baz-val\" xmlns=\"ns:baz\"/>"
-				"</foo>";
-			CPPUNIT_ASSERT(parser.parse(xml));
-
-			RawXMLPayload* payload = dynamic_cast<RawXMLPayload*>(testling.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(xml, payload->getRawXML());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(RawXMLPayloadParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/ResourceBindParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/ResourceBindParserTest.cpp
deleted file mode 100644
index b1b61ef..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/ResourceBindParserTest.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/ResourceBindParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class ResourceBindParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(ResourceBindParserTest);
-		CPPUNIT_TEST(testParse_JID);
-		CPPUNIT_TEST(testParse_Resource);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		ResourceBindParserTest() {}
-
-		void testParse_JID() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse("<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><jid>somenode@example.com/someresource</jid></bind>"));
-
-			ResourceBind* payload = dynamic_cast<ResourceBind*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(JID("somenode@example.com/someresource"), payload->getJID());
-		}
-
-		void testParse_Resource() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse("<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><resource>someresource</resource></bind>"));
-
-			ResourceBind* payload = dynamic_cast<ResourceBind*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(String("someresource"), payload->getResource());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ResourceBindParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/RosterParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/RosterParserTest.cpp
deleted file mode 100644
index 4c8db07..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/RosterParserTest.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/RosterParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class RosterParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(RosterParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		RosterParserTest() {}
-
-		void testParse() {
-			PayloadsParserTester parser;
-			parser.parse(
-				"<query xmlns='jabber:iq:roster'>"
-				"	<item jid='foo@bar.com' name='Foo @ Bar' subscription='from' ask='subscribe'>"
-				"		<group>Group 1</group>"
-				"		<group>Group 2</group>"
-				"	</item>"
-				" <item jid='baz@blo.com' name='Baz'/>"
-				"</query>");
-
-			RosterPayload* payload = dynamic_cast<RosterPayload*>(parser.getPayload().get());
-			const RosterPayload::RosterItemPayloads& items = payload->getItems();
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), items.size());
-
-			CPPUNIT_ASSERT_EQUAL(JID("foo@bar.com"), items[0].getJID());
-			CPPUNIT_ASSERT_EQUAL(String("Foo @ Bar"), items[0].getName());
-			CPPUNIT_ASSERT_EQUAL(RosterItemPayload::From, items[0].getSubscription());
-			CPPUNIT_ASSERT(items[0].getSubscriptionRequested());
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), items[0].getGroups().size());
-			CPPUNIT_ASSERT_EQUAL(String("Group 1"), items[0].getGroups()[0]);
-			CPPUNIT_ASSERT_EQUAL(String("Group 2"), items[0].getGroups()[1]);
-
-			CPPUNIT_ASSERT_EQUAL(JID("baz@blo.com"), items[1].getJID());
-			CPPUNIT_ASSERT_EQUAL(String("Baz"), items[1].getName());
-			CPPUNIT_ASSERT_EQUAL(RosterItemPayload::None, items[1].getSubscription());
-			CPPUNIT_ASSERT(!items[1].getSubscriptionRequested());
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), items[1].getGroups().size());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(RosterParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelParserTest.cpp
deleted file mode 100644
index 8272bee..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelParserTest.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/SecurityLabelParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class SecurityLabelParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(SecurityLabelParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		SecurityLabelParserTest() {}
-
-		void testParse() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<securitylabel xmlns=\"urn:xmpp:sec-label:0\">"
-					"<displaymarking fgcolor=\"black\" bgcolor=\"red\">SECRET</displaymarking>"
-					"<label>"
-						"<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>"
-					"</label>"
-					"<equivalentlabel>"
-						"<icismlabel xmlns=\"http://example.gov/IC-ISM/0\" classification=\"S\" ownerProducer=\"USA\" disseminationControls=\"FOUO\"/>"
-					"</equivalentlabel>"
-					"<equivalentlabel>"
-						"<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MRUCAgD9DA9BcXVhIChvYnNvbGV0ZSk=</esssecuritylabel>"
-					"</equivalentlabel>"
-				"</securitylabel>"));
-
-			SecurityLabel* payload = dynamic_cast<SecurityLabel*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(String("SECRET"), payload->getDisplayMarking());
-			CPPUNIT_ASSERT_EQUAL(String("black"), payload->getForegroundColor());
-			CPPUNIT_ASSERT_EQUAL(String("red"), payload->getBackgroundColor());
-			CPPUNIT_ASSERT_EQUAL(String("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>"), payload->getLabel());	
-			CPPUNIT_ASSERT_EQUAL(String("<icismlabel classification=\"S\" disseminationControls=\"FOUO\" ownerProducer=\"USA\" xmlns=\"http://example.gov/IC-ISM/0\"/>"), payload->getEquivalentLabels()[0]);	
-			CPPUNIT_ASSERT_EQUAL(String("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MRUCAgD9DA9BcXVhIChvYnNvbGV0ZSk=</esssecuritylabel>"), payload->getEquivalentLabels()[1]);	
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(SecurityLabelParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelsCatalogParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelsCatalogParserTest.cpp
deleted file mode 100644
index b2378b6..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/SecurityLabelsCatalogParserTest.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class SecurityLabelsCatalogParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(SecurityLabelsCatalogParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		SecurityLabelsCatalogParserTest() {}
-
-		void testParse() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<catalog desc=\"an example set of labels\" name=\"Default\" to=\"example.com\" xmlns=\"urn:xmpp:sec-label:catalog:0\">"
-					"<securitylabel xmlns=\"urn:xmpp:sec-label:0\">"
-						"<displaymarking bgcolor=\"red\" fgcolor=\"black\">SECRET</displaymarking>"
-						"<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel></label>"
-					"</securitylabel>"
-					"<securitylabel xmlns=\"urn:xmpp:sec-label:0\">"
-						"<displaymarking bgcolor=\"navy\" fgcolor=\"black\">CONFIDENTIAL</displaymarking>"
-						"<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel></label>"
-					"</securitylabel>"
-				"</catalog>"));
-
-			SecurityLabelsCatalog* payload = dynamic_cast<SecurityLabelsCatalog*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(String("Default"), payload->getName());
-			CPPUNIT_ASSERT_EQUAL(String("an example set of labels"), payload->getDescription());
-			CPPUNIT_ASSERT_EQUAL(JID("example.com"), payload->getTo());
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(payload->getLabels().size()));
-			CPPUNIT_ASSERT_EQUAL(String("SECRET"), payload->getLabels()[0].getDisplayMarking());
-			CPPUNIT_ASSERT_EQUAL(String("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>"), payload->getLabels()[0].getLabel());
-			CPPUNIT_ASSERT_EQUAL(String("CONFIDENTIAL"), payload->getLabels()[1].getDisplayMarking());
-			CPPUNIT_ASSERT_EQUAL(String("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel>"), payload->getLabels()[1].getLabel());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(SecurityLabelsCatalogParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/SoftwareVersionParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/SoftwareVersionParserTest.cpp
deleted file mode 100644
index eeaa8d9..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/SoftwareVersionParserTest.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/SoftwareVersionParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class SoftwareVersionParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(SoftwareVersionParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		SoftwareVersionParserTest() {}
-
-		void testParse() {
-			PayloadsParserTester parser;
-			
-			CPPUNIT_ASSERT(parser.parse(
-				"<query xmlns=\"jabber:iq:version\">"
-					"<name>myclient</name>"
-					"<version>1.0</version>"
-					"<os>Mac OS X</os>"
-				"</query>"));
-
-			SoftwareVersion* payload = dynamic_cast<SoftwareVersion*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(String("myclient"), payload->getName());
-			CPPUNIT_ASSERT_EQUAL(String("1.0"), payload->getVersion());
-			CPPUNIT_ASSERT_EQUAL(String("Mac OS X"), payload->getOS());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(SoftwareVersionParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/StatusParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/StatusParserTest.cpp
deleted file mode 100644
index 71d5b0b..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/StatusParserTest.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/StatusParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class StatusParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(StatusParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		StatusParserTest() {}
-
-		void testParse() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse("<status>foo<baz>bar</baz>fum</status>"));
-
-			Status* payload = dynamic_cast<Status*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(String("foobarfum"), payload->getText());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StatusParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/StatusShowParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/StatusShowParserTest.cpp
deleted file mode 100644
index d45e98b..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/StatusShowParserTest.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/StatusShowParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class StatusShowParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(StatusShowParserTest);
-		CPPUNIT_TEST(testParse_Invalid);
-		CPPUNIT_TEST(testParse_Away);
-		CPPUNIT_TEST(testParse_FFC);
-		CPPUNIT_TEST(testParse_XA);
-		CPPUNIT_TEST(testParse_DND);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		StatusShowParserTest() {}
-
-		void testParse_Invalid() {
-			PayloadsParserTester parser;
-			
-			CPPUNIT_ASSERT(parser.parse("<show>invalid</show>"));
-
-			StatusShow* payload = dynamic_cast<StatusShow*>(parser.getPayload().get());
-			CPPUNIT_ASSERT(StatusShow::Online == payload->getType());
-		}
-
-		void testParse_Away() {
-			PayloadsParserTester parser;
-			
-			CPPUNIT_ASSERT(parser.parse("<show>away</show>"));
-
-			StatusShow* payload = dynamic_cast<StatusShow*>(parser.getPayload().get());
-			CPPUNIT_ASSERT(StatusShow::Away == payload->getType());
-		}
-
-		void testParse_FFC() {
-			PayloadsParserTester parser;
-			
-			CPPUNIT_ASSERT(parser.parse("<show>chat</show>"));
-
-			StatusShow* payload = dynamic_cast<StatusShow*>(parser.getPayload().get());
-			CPPUNIT_ASSERT(StatusShow::FFC == payload->getType());
-		}
-
-		void testParse_XA() {
-			PayloadsParserTester parser;
-			
-			CPPUNIT_ASSERT(parser.parse("<show>xa</show>"));
-
-			StatusShow* payload = dynamic_cast<StatusShow*>(parser.getPayload().get());
-			CPPUNIT_ASSERT(StatusShow::XA == payload->getType());
-		}
-
-		void testParse_DND() {
-			PayloadsParserTester parser;
-			
-			CPPUNIT_ASSERT(parser.parse("<show>dnd</show>"));
-
-			StatusShow* payload = dynamic_cast<StatusShow*>(parser.getPayload().get());
-			CPPUNIT_ASSERT(StatusShow::DND == payload->getType());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StatusShowParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/StorageParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/StorageParserTest.cpp
deleted file mode 100644
index 3fbf27a..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/StorageParserTest.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/StorageParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class StorageParserTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(StorageParserTest);
-		CPPUNIT_TEST(testParse_Conference);
-		CPPUNIT_TEST(testParse_MultipleConferences);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		StorageParserTest() {}
-
-		void testParse_Conference() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<storage xmlns='storage:bookmarks'>"
-					"<conference "
-							"name='Council of Oberon' "
-							"autojoin='true' jid='council@conference.underhill.org'>"
-						"<nick>Puck</nick>"
-						"<password>MyPass</password>"
-					"</conference>"
-				"</storage>"));
-
-			Storage* payload = dynamic_cast<Storage*>(parser.getPayload().get());
-			std::vector<Storage::Conference> conferences = payload->getConferences();
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(conferences.size()));
-			CPPUNIT_ASSERT_EQUAL(String("Council of Oberon"), conferences[0].name);
-			CPPUNIT_ASSERT_EQUAL(JID("council@conference.underhill.org"), conferences[0].jid);
-			CPPUNIT_ASSERT(conferences[0].autoJoin);
-			CPPUNIT_ASSERT_EQUAL(String("Puck"), conferences[0].nick);
-			CPPUNIT_ASSERT_EQUAL(String("MyPass"), conferences[0].password);
-		}
-
-		void testParse_MultipleConferences() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<storage xmlns='storage:bookmarks'>"
-					"<conference "
-							"name='Council of Oberon' "
-							"jid='council@conference.underhill.org' />"
-					"<conference "
-							"name='Tea party' "
-							"jid='teaparty@wonderland.lit' />"
-				"</storage>"));
-
-			Storage* payload = dynamic_cast<Storage*>(parser.getPayload().get());
-			std::vector<Storage::Conference> conferences = payload->getConferences();
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(conferences.size()));
-			CPPUNIT_ASSERT_EQUAL(String("Council of Oberon"), conferences[0].name);
-			CPPUNIT_ASSERT_EQUAL(JID("council@conference.underhill.org"), conferences[0].jid);
-			CPPUNIT_ASSERT_EQUAL(String("Tea party"), conferences[1].name);
-			CPPUNIT_ASSERT_EQUAL(JID("teaparty@wonderland.lit"), conferences[1].jid);
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StorageParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/VCardParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/VCardParserTest.cpp
deleted file mode 100644
index d1ddba3..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/VCardParserTest.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/VCardParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class VCardParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(VCardParserTest);
-		CPPUNIT_TEST(testParse_Photo);
-		CPPUNIT_TEST(testParse_Nickname);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		VCardParserTest() {}
-
-		void testParse_Photo() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<vCard xmlns='vcard-temp'>"
-					"<PHOTO>"
-						"<TYPE>image/jpeg</TYPE>"
-						"<BINVAL>"
-							"QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ej"
-							"EyMzQ1Njc4OTA="
-						"</BINVAL>"
-					"</PHOTO>"
-				"</vCard>"));
-
-			VCard* payload = dynamic_cast<VCard*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), payload->getPhotoType());
-			CPPUNIT_ASSERT_EQUAL(ByteArray("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"), payload->getPhoto());
-		}
-
-		void testParse_Nickname() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<vCard xmlns='vcard-temp'>"
-					"<NICKNAME>mynick</NICKNAME>"
-				"</vCard>"));
-
-			VCard* payload = dynamic_cast<VCard*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(String("mynick"), payload->getNickname());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(VCardParserTest);
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/VCardUpdateParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/VCardUpdateParserTest.cpp
deleted file mode 100644
index ef6c78e..0000000
--- a/Swiften/Parser/PayloadParsers/UnitTest/VCardUpdateParserTest.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParsers/VCardUpdateParser.h"
-#include "Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h"
-
-using namespace Swift;
-
-class VCardUpdateParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(VCardUpdateParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		VCardUpdateParserTest() {}
-
-		void testParse() {
-			PayloadsParserTester parser;
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<x xmlns='vcard-temp:x:update'>"
-					"<photo>sha1-hash-of-image</photo>"
-				"</x>"));
-
-			VCardUpdate* payload = dynamic_cast<VCardUpdate*>(parser.getPayload().get());
-			CPPUNIT_ASSERT_EQUAL(String("sha1-hash-of-image"), payload->getPhotoHash());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(VCardUpdateParserTest);
diff --git a/Swiften/Parser/PayloadParsers/VCardParser.cpp b/Swiften/Parser/PayloadParsers/VCardParser.cpp
deleted file mode 100644
index 87416ab..0000000
--- a/Swiften/Parser/PayloadParsers/VCardParser.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/VCardParser.h"
-#include "Swiften/Base/foreach.h"
-#include "Swiften/StringCodecs/Base64.h"
-
-namespace Swift {
-
-VCardParser::VCardParser() {
-}
-
-void VCardParser::handleStartElement(const String& element, const String&, const AttributeMap&) {
-	elementStack_.push_back(element);
-	currentText_ = "";
-}
-
-void VCardParser::handleEndElement(const String&, const String&) {
-	String elementHierarchy = getElementHierarchy();
-	if (elementHierarchy == "/vCard/PHOTO/TYPE") {
-		getPayloadInternal()->setPhotoType(currentText_);
-	}
-	else if (elementHierarchy == "/vCard/PHOTO/BINVAL") {
-		getPayloadInternal()->setPhoto(Base64::decode(currentText_));
-	}
-	else if (elementHierarchy == "/vCard/NICKNAME") {
-		getPayloadInternal()->setNickname(currentText_);
-	}
-	else if (elementHierarchy == "/vCard/FN") {
-		getPayloadInternal()->setFullName(currentText_);
-	}
-	else if (elementHierarchy == "/vCard/N/FAMILY") {
-		getPayloadInternal()->setFamilyName(currentText_);
-	}
-	else if (elementHierarchy == "/vCard/N/GIVEN") {
-		getPayloadInternal()->setGivenName(currentText_);
-	}
-	else if (elementHierarchy == "/vCard/EMAIL/USERID") {
-		getPayloadInternal()->setEMail(currentText_);
-	}
-	elementStack_.pop_back();
-}
-
-void VCardParser::handleCharacterData(const String& text) {
-	currentText_ += text;
-}
-
-String VCardParser::getElementHierarchy() const {
-	String result;
-	foreach(const String& element, elementStack_) {
-		result += "/" + element;
-	}
-	return result;
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/VCardParser.h b/Swiften/Parser/PayloadParsers/VCardParser.h
deleted file mode 100644
index c1ed46b..0000000
--- a/Swiften/Parser/PayloadParsers/VCardParser.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-#include "Swiften/Elements/VCard.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class SerializingParser;
-
-	class VCardParser : public GenericPayloadParser<VCard> {
-		public:
-			VCardParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			String getElementHierarchy() const;
-
-		private:
-			std::vector<String> elementStack_;
-			String currentText_;
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/VCardParserFactory.h b/Swiften/Parser/PayloadParsers/VCardParserFactory.h
deleted file mode 100644
index 2d5302b..0000000
--- a/Swiften/Parser/PayloadParsers/VCardParserFactory.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/VCardParser.h"
-
-namespace Swift {
-	class VCardParserFactory : public GenericPayloadParserFactory<VCardParser> {
-		public:
-			VCardParserFactory() : GenericPayloadParserFactory<VCardParser>("vCard", "vcard-temp") {}
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/VCardUpdateParser.cpp b/Swiften/Parser/PayloadParsers/VCardUpdateParser.cpp
deleted file mode 100644
index e195eb7..0000000
--- a/Swiften/Parser/PayloadParsers/VCardUpdateParser.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include "Swiften/Parser/PayloadParsers/VCardUpdateParser.h"
-
-namespace Swift {
-
-VCardUpdateParser::VCardUpdateParser() : level_(TopLevel) {
-}
-
-void VCardUpdateParser::handleStartElement(const String&, const String&, const AttributeMap&) {
-	if (level_ == PayloadLevel) {
-		currentText_ = "";
-	}
-	++level_;
-}
-
-void VCardUpdateParser::handleEndElement(const String& element, const String&) {
-	--level_;
-	if (level_ == PayloadLevel && element == "photo") {
-		getPayloadInternal()->setPhotoHash(currentText_);
-	}
-}
-
-void VCardUpdateParser::handleCharacterData(const String& text) {
-	currentText_ += text;
-}
-
-}
diff --git a/Swiften/Parser/PayloadParsers/VCardUpdateParser.h b/Swiften/Parser/PayloadParsers/VCardUpdateParser.h
deleted file mode 100644
index 3682ccf..0000000
--- a/Swiften/Parser/PayloadParsers/VCardUpdateParser.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-
-#include "Swiften/Elements/VCardUpdate.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-
-namespace Swift {
-	class SerializingParser;
-
-	class VCardUpdateParser : public GenericPayloadParser<VCardUpdate> {
-		public:
-			VCardUpdateParser();
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String&);
-			virtual void handleCharacterData(const String& data);
-
-		private:
-			enum Level { 
-				TopLevel = 0, 
-				PayloadLevel = 1
-			};
-			int level_;
-			String currentText_;
-	};
-}
diff --git a/Swiften/Parser/PayloadParsers/VCardUpdateParserFactory.h b/Swiften/Parser/PayloadParsers/VCardUpdateParserFactory.h
deleted file mode 100644
index 0a8dddf..0000000
--- a/Swiften/Parser/PayloadParsers/VCardUpdateParserFactory.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-
-#include "Swiften/Parser/GenericPayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParsers/VCardUpdateParser.h"
-
-namespace Swift {
-	class VCardUpdateParserFactory : public GenericPayloadParserFactory<VCardUpdateParser> {
-		public:
-			VCardUpdateParserFactory() : GenericPayloadParserFactory<VCardUpdateParser>("x", "vcard-temp:x:update") {}
-	};
-}
diff --git a/Swiften/Parser/PlatformXMLParserFactory.cpp b/Swiften/Parser/PlatformXMLParserFactory.cpp
deleted file mode 100644
index 0624a2d..0000000
--- a/Swiften/Parser/PlatformXMLParserFactory.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "Swiften/Parser/PlatformXMLParserFactory.h"
-
-#include <cassert>
-
-#ifdef HAVE_LIBXML
-#include "Swiften/Parser/LibXMLParser.h"
-#else
-#include "Swiften/Parser/ExpatParser.h"
-#endif
-
-
-namespace Swift {
-
-PlatformXMLParserFactory::PlatformXMLParserFactory() {
-}
-
-XMLParser* PlatformXMLParserFactory::createXMLParser(XMLParserClient* client) {
-#ifdef HAVE_LIBXML
-	return new LibXMLParser(client);
-#else
-	return new ExpatParser(client);
-#endif
-}
-
-}
diff --git a/Swiften/Parser/PlatformXMLParserFactory.h b/Swiften/Parser/PlatformXMLParserFactory.h
deleted file mode 100644
index 28b1657..0000000
--- a/Swiften/Parser/PlatformXMLParserFactory.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef SWIFTEN_PlatformXMLParserFactory_H
-#define SWIFTEN_PlatformXMLParserFactory_H
-
-#include "Swiften/Parser/XMLParserFactory.h"
-
-namespace Swift {
-	class PlatformXMLParserFactory : public XMLParserFactory {
-		public:
-			PlatformXMLParserFactory();
-
-			virtual XMLParser* createXMLParser(XMLParserClient*);
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/PresenceParser.cpp b/Swiften/Parser/PresenceParser.cpp
deleted file mode 100644
index 72cdd4c..0000000
--- a/Swiften/Parser/PresenceParser.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#include <iostream>
-
-#include "Swiften/Parser/PresenceParser.h"
-
-namespace Swift {
-
-PresenceParser::PresenceParser(PayloadParserFactoryCollection* factories) : 
-		GenericStanzaParser<Presence>(factories) {
-}
-
-void PresenceParser::handleStanzaAttributes(const AttributeMap& attributes) {
-	AttributeMap::const_iterator type = attributes.find("type");
-	if (type != attributes.end()) {
-		if (type->second == "unavailable") {
-			getStanzaGeneric()->setType(Presence::Unavailable);
-		}
-		else if (type->second == "probe") {
-			getStanzaGeneric()->setType(Presence::Probe);
-		}
-		else if (type->second == "subscribe") {
-			getStanzaGeneric()->setType(Presence::Subscribe);
-		}
-		else if (type->second == "subscribed") {
-			getStanzaGeneric()->setType(Presence::Subscribed);
-		}
-		else if (type->second == "unsubscribe") {
-			getStanzaGeneric()->setType(Presence::Unsubscribe);
-		}
-		else if (type->second == "unsubscribed") {
-			getStanzaGeneric()->setType(Presence::Unsubscribed);
-		}
-		else if (type->second == "error") {
-			getStanzaGeneric()->setType(Presence::Error);
-		}
-		else {
-			std::cerr << "Unknown Presence type: " << type->second << std::endl;
-			getStanzaGeneric()->setType(Presence::Available);
-		}
-	}
-	else {
-		getStanzaGeneric()->setType(Presence::Available);
-	}
-}
-
-}
diff --git a/Swiften/Parser/PresenceParser.h b/Swiften/Parser/PresenceParser.h
deleted file mode 100644
index b3ba445..0000000
--- a/Swiften/Parser/PresenceParser.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef SWIFTEN_PresenceParser_H
-#define SWIFTEN_PresenceParser_H
-
-#include "Swiften/Parser/GenericStanzaParser.h"
-#include "Swiften/Elements/Presence.h"
-
-namespace Swift {
-	class PresenceParser : public GenericStanzaParser<Presence> {
-		public:
-			PresenceParser(PayloadParserFactoryCollection* factories);
-
-		private:
-			virtual void handleStanzaAttributes(const AttributeMap&);
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/SConscript b/Swiften/Parser/SConscript
deleted file mode 100644
index 7d93d8b..0000000
--- a/Swiften/Parser/SConscript
+++ /dev/null
@@ -1,58 +0,0 @@
-Import("swiften_env")
-
-myenv = swiften_env.Clone()
-myenv.MergeFlags(swiften_env["BOOST_FLAGS"])
-myenv.MergeFlags(swiften_env.get("LIBXML_FLAGS", ""))
-myenv.MergeFlags(swiften_env.get("EXPAT_FLAGS", ""))
-
-sources = [
-		"AuthRequestParser.cpp",
-		"AuthChallengeParser.cpp",
-		"AuthSuccessParser.cpp",
-		"AuthResponseParser.cpp",
-		"CompressParser.cpp",
-		"ElementParser.cpp",
-		"IQParser.cpp",
-		"MessageParser.cpp",
-		"PayloadParser.cpp",
-		"PayloadParserFactory.cpp",
-		"PayloadParserFactoryCollection.cpp",
-		"PayloadParsers/BodyParser.cpp",
-		"PayloadParsers/ChatStateParser.cpp",
-		"PayloadParsers/DiscoInfoParser.cpp",
-		"PayloadParsers/ErrorParser.cpp",
-		"PayloadParsers/FullPayloadParserFactoryCollection.cpp",
-		"PayloadParsers/PriorityParser.cpp",
-		"PayloadParsers/PrivateStorageParser.cpp",
-		"PayloadParsers/RawXMLPayloadParser.cpp",
-		"PayloadParsers/ResourceBindParser.cpp",
-		"PayloadParsers/RosterParser.cpp",
-		"PayloadParsers/SecurityLabelParser.cpp",
-		"PayloadParsers/SecurityLabelsCatalogParser.cpp",
-		"PayloadParsers/SoftwareVersionParser.cpp",
-		"PayloadParsers/StorageParser.cpp",
-		"PayloadParsers/StatusParser.cpp",
-		"PayloadParsers/StatusShowParser.cpp",
-		"PayloadParsers/VCardParser.cpp",
-		"PayloadParsers/VCardUpdateParser.cpp",
-		"PlatformXMLParserFactory.cpp",
-		"PresenceParser.cpp",
-		"SerializingParser.cpp",
-		"StanzaParser.cpp",
-		"StreamFeaturesParser.cpp",
-		"XMLParser.cpp",
-		"XMLParserClient.cpp",
-		"XMLParserFactory.cpp",
-		"XMPPParser.cpp",
-		"XMPPParserClient.cpp",
-	]
-
-if myenv.get("HAVE_EXPAT", 0) :
-	myenv.Append(CPPDEFINES = "HAVE_EXPAT")
-	sources += ["ExpatParser.cpp"]
-if myenv.get("HAVE_LIBXML", 0) :
-	myenv.Append(CPPDEFINES = "HAVE_LIBXML")
-	sources += ["LibXMLParser.cpp"]
-
-objects = myenv.StaticObject(sources)
-swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/Parser/SerializingParser.cpp b/Swiften/Parser/SerializingParser.cpp
deleted file mode 100644
index f69e732..0000000
--- a/Swiften/Parser/SerializingParser.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "Swiften/Parser/SerializingParser.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-#include "Swiften/Base/foreach.h"
-#include <iostream>
-
-namespace Swift {
-
-SerializingParser::SerializingParser() {
-}
-
-void SerializingParser::handleStartElement(const String& tag, const String&  ns, const AttributeMap& attributes) {
-	boost::shared_ptr<XMLElement> element(new XMLElement(tag, ns));
-	for (AttributeMap::const_iterator i = attributes.begin(); i != attributes.end(); ++i) {
-		element->setAttribute((*i).first, (*i).second);
-	}
-
-	if (elementStack_.empty()) {
-		rootElement_ = element;
-	}
-	else {
-		(*(elementStack_.end() - 1))->addNode(element);
-	}
-	elementStack_.push_back(element);
-}
-
-void SerializingParser::handleEndElement(const String&, const String&) {
-	assert(!elementStack_.empty());
-	elementStack_.pop_back();
-}
-
-void SerializingParser::handleCharacterData(const String& data) {
-	if (!elementStack_.empty()) {
-		(*(elementStack_.end()-1))->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(data)));
-	}
-}
-
-String SerializingParser::getResult() const {
-	return (rootElement_ ? rootElement_->serialize() : "");
-}
-
-}
diff --git a/Swiften/Parser/SerializingParser.h b/Swiften/Parser/SerializingParser.h
deleted file mode 100644
index b1d4575..0000000
--- a/Swiften/Parser/SerializingParser.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef SWIFTEN_SerializingParser_H
-#define SWIFTEN_SerializingParser_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Parser/AttributeMap.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-	class SerializingParser {
-		public:
-			SerializingParser();
-
-			void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes);
-			void handleEndElement(const String& element, const String& ns);
-			void handleCharacterData(const String& data);
-
-			String getResult() const;
-
-		private:
-			std::vector< boost::shared_ptr<XMLElement> > elementStack_;
-			boost::shared_ptr<XMLElement> rootElement_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/StanzaParser.cpp b/Swiften/Parser/StanzaParser.cpp
deleted file mode 100644
index 952265c..0000000
--- a/Swiften/Parser/StanzaParser.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-#include "Swiften/Parser/StanzaParser.h"
-
-#include <iostream>
-#include <cassert>
-
-#include "Swiften/Parser/PayloadParser.h"
-#include "Swiften/Parser/PayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParserFactoryCollection.h"
-#include "Swiften/Parser/UnknownPayloadParser.h"
-
-namespace Swift {
-
-StanzaParser::StanzaParser(PayloadParserFactoryCollection* factories) : 
-		currentDepth_(0), factories_(factories) {
-}
-
-StanzaParser::~StanzaParser() {
-}
-
-void StanzaParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) {
-	if (inStanza()) {
-		if (!inPayload()) {
-			assert(!currentPayloadParser_.get());
-			PayloadParserFactory* payloadParserFactory = factories_->getPayloadParserFactory(element, ns, attributes);
-			if (payloadParserFactory) {
-				currentPayloadParser_.reset(payloadParserFactory->createPayloadParser());
-			}
-			else {
-				currentPayloadParser_.reset(new UnknownPayloadParser());
-			}
-		}
-		assert(currentPayloadParser_.get());
-		currentPayloadParser_->handleStartElement(element, ns, attributes);
-	}
-	else {
-		AttributeMap::const_iterator from = attributes.find("from");
-		if (from != attributes.end()) {
-			getStanza()->setFrom(JID(from->second));
-		}
-		AttributeMap::const_iterator to = attributes.find("to");
-		if (to != attributes.end()) {
-			getStanza()->setTo(JID(to->second));
-		}
-		AttributeMap::const_iterator id = attributes.find("id");
-		if (id != attributes.end()) {
-			getStanza()->setID(id->second);
-		}
-		handleStanzaAttributes(attributes);
-	}
-	++currentDepth_;
-}
-
-void StanzaParser::handleEndElement(const String& element, const String& ns) {
-	assert(inStanza());
-	if (inPayload()) {
-		assert(currentPayloadParser_.get());
-		currentPayloadParser_->handleEndElement(element, ns);
-		--currentDepth_;
-		if (!inPayload()) {
-			boost::shared_ptr<Payload> payload(currentPayloadParser_->getPayload());
-			if (payload) {
-				getStanza()->addPayload(payload);
-			}
-			currentPayloadParser_.reset();
-		}
-	}
-	else {
-		--currentDepth_;
-	}
-}
-
-void StanzaParser::handleCharacterData(const String& data) {
-	if (currentPayloadParser_.get()) {
-		currentPayloadParser_->handleCharacterData(data);
-	}
-}
-
-}
diff --git a/Swiften/Parser/StanzaParser.h b/Swiften/Parser/StanzaParser.h
deleted file mode 100644
index c6cf753..0000000
--- a/Swiften/Parser/StanzaParser.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef SWIFTEN_StanzaParser_H
-#define SWIFTEN_StanzaParser_H
-
-#include <boost/noncopyable.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Stanza.h"
-#include "Swiften/Parser/ElementParser.h"
-#include "Swiften/Parser/AttributeMap.h"
-
-namespace Swift {
-	class PayloadParser;
-	class PayloadParserFactoryCollection;
-
-	class StanzaParser : public ElementParser, public boost::noncopyable {
-		public:
-			StanzaParser(PayloadParserFactoryCollection* factories);
-			~StanzaParser();
-
-			void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes);
-			void handleEndElement(const String& element, const String& ns);
-			void handleCharacterData(const String& data);
-
-			virtual boost::shared_ptr<Element> getElement() const = 0;
-			virtual void handleStanzaAttributes(const AttributeMap&) {}
-
-			virtual boost::shared_ptr<Stanza> getStanza() const {
-				return boost::dynamic_pointer_cast<Stanza>(getElement());
-			}
-
-		private:
-			bool inPayload() const {
-				return currentDepth_ > 1;
-			}
-
-			bool inStanza() const {
-				return currentDepth_ > 0;
-			}
-
-
-		private:
-			int currentDepth_;
-			PayloadParserFactoryCollection* factories_;
-			std::auto_ptr<PayloadParser> currentPayloadParser_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/StartTLSFailureParser.h b/Swiften/Parser/StartTLSFailureParser.h
deleted file mode 100644
index c955ca0..0000000
--- a/Swiften/Parser/StartTLSFailureParser.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_StartTLSFailureParser_H
-#define SWIFTEN_StartTLSFailureParser_H
-
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/StartTLSFailure.h"
-
-namespace Swift {
-	class StartTLSFailureParser : public GenericElementParser<StartTLSFailure> {
-		public:
-			StartTLSFailureParser() : GenericElementParser<StartTLSFailure>() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/StartTLSParser.h b/Swiften/Parser/StartTLSParser.h
deleted file mode 100644
index afacec2..0000000
--- a/Swiften/Parser/StartTLSParser.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_StartTLSParser_H
-#define SWIFTEN_StartTLSParser_H
-
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/StartTLSRequest.h"
-
-namespace Swift {
-	class StartTLSParser : public GenericElementParser<StartTLSRequest> {
-		public:
-			StartTLSParser() : GenericElementParser<StartTLSRequest>() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/StreamFeaturesParser.cpp b/Swiften/Parser/StreamFeaturesParser.cpp
deleted file mode 100644
index 5072e7c..0000000
--- a/Swiften/Parser/StreamFeaturesParser.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "Swiften/Parser/StreamFeaturesParser.h"
-
-namespace Swift {
-
-StreamFeaturesParser::StreamFeaturesParser() : GenericElementParser<StreamFeatures>(), currentDepth_(0), inMechanisms_(false), inMechanism_(false), inCompression_(false), inCompressionMethod_(false) {
-}
-
-void StreamFeaturesParser::handleStartElement(const String& element, const String& ns, const AttributeMap&) {
-	if (currentDepth_ == 1) {
-		if (element == "starttls" && ns == "urn:ietf:params:xml:ns:xmpp-tls") {
-			getElementGeneric()->setHasStartTLS();
-		}
-		else if (element == "session" && ns == "urn:ietf:params:xml:ns:xmpp-session") {
-			getElementGeneric()->setHasSession();
-		}
-		else if (element == "bind" && ns == "urn:ietf:params:xml:ns:xmpp-bind") {
-			getElementGeneric()->setHasResourceBind();
-		}
-		else if (element == "mechanisms" && ns == "urn:ietf:params:xml:ns:xmpp-sasl") {
-			inMechanisms_ = true;
-		}
-		else if (element == "compression" && ns == "http://jabber.org/features/compress") {
-			inCompression_ = true;
-		}
-	}
-	else if (currentDepth_ == 2) {
-		if (inCompression_ && element == "method") {
-			inCompressionMethod_ = true;
-			currentText_ = "";
-		}
-		else if (inMechanisms_ && element == "mechanism") {
-			inMechanism_ = true;
-			currentText_ = "";
-		}
-	}
-	++currentDepth_;
-}
-
-void StreamFeaturesParser::handleEndElement(const String&, const String&) {
-	--currentDepth_;
-	if (currentDepth_ == 1) {
-		inCompression_ = false;
-		inMechanisms_ = false;
-	}
-	else if (currentDepth_ == 2) {
-		if (inCompressionMethod_) {
-			getElementGeneric()->addCompressionMethod(currentText_);
-			inCompressionMethod_ = false;
-		}
-		else if (inMechanism_) {
-			getElementGeneric()->addAuthenticationMechanism(currentText_);
-			inMechanism_ = false;
-		}
-	}
-}
-
-void StreamFeaturesParser::handleCharacterData(const String& data) {
-	currentText_ += data;
-}
-
-}
diff --git a/Swiften/Parser/StreamFeaturesParser.h b/Swiften/Parser/StreamFeaturesParser.h
deleted file mode 100644
index 184a7e6..0000000
--- a/Swiften/Parser/StreamFeaturesParser.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef SWIFTEN_STREAMFEATURESPARSER_H
-#define SWIFTEN_STREAMFEATURESPARSER_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/StreamFeatures.h"
-
-namespace Swift {
-	class StreamFeaturesParser : public GenericElementParser<StreamFeatures> {
-		public:
-			StreamFeaturesParser();
-
-		private:
-			void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes);
-			void handleEndElement(const String& element, const String& ns);
-			void handleCharacterData(const String& data);
-
-		private:
-			int currentDepth_;
-			String currentText_;
-			bool inMechanisms_;
-			bool inMechanism_;
-			bool inCompression_;
-			bool inCompressionMethod_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/TLSProceedParser.h b/Swiften/Parser/TLSProceedParser.h
deleted file mode 100644
index 2ad5438..0000000
--- a/Swiften/Parser/TLSProceedParser.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_TLSProceedParser_H
-#define SWIFTEN_TLSProceedParser_H
-
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/TLSProceed.h"
-
-namespace Swift {
-	class TLSProceedParser : public GenericElementParser<TLSProceed> {
-		public:
-			TLSProceedParser() : GenericElementParser<TLSProceed>() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/UnitTest/AttributeMapTest.cpp b/Swiften/Parser/UnitTest/AttributeMapTest.cpp
deleted file mode 100644
index 17bda95..0000000
--- a/Swiften/Parser/UnitTest/AttributeMapTest.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/AttributeMap.h"
-
-using namespace Swift;
-
-class AttributeMapTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(AttributeMapTest);
-		CPPUNIT_TEST(testGetBoolAttribute_True);
-		CPPUNIT_TEST(testGetBoolAttribute_1);
-		CPPUNIT_TEST(testGetBoolAttribute_False);
-		CPPUNIT_TEST(testGetBoolAttribute_0);
-		CPPUNIT_TEST(testGetBoolAttribute_Invalid);
-		CPPUNIT_TEST(testGetBoolAttribute_UnknownWithDefaultTrue);
-		CPPUNIT_TEST(testGetBoolAttribute_UnknownWithDefaultFalse);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		AttributeMapTest() {}
-
-		void testGetBoolAttribute_True() {
-			AttributeMap testling;
-			testling["foo"] = "true";
-
-			CPPUNIT_ASSERT(testling.getBoolAttribute("foo"));
-		}
-
-		void testGetBoolAttribute_1() {
-			AttributeMap testling;
-			testling["foo"] = "1";
-
-			CPPUNIT_ASSERT(testling.getBoolAttribute("foo"));
-		}
-
-		void testGetBoolAttribute_False() {
-			AttributeMap testling;
-			testling["foo"] = "false";
-
-			CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", true));
-		}
-
-		void testGetBoolAttribute_0() {
-			AttributeMap testling;
-			testling["foo"] = "0";
-
-			CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", true));
-		}
-
-		void testGetBoolAttribute_Invalid() {
-			AttributeMap testling;
-			testling["foo"] = "bla";
-
-			CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", true));
-		}
-
-		void testGetBoolAttribute_UnknownWithDefaultTrue() {
-			AttributeMap testling;
-
-			CPPUNIT_ASSERT(testling.getBoolAttribute("foo", true));
-		}
-
-		void testGetBoolAttribute_UnknownWithDefaultFalse() {
-			AttributeMap testling;
-
-			CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", false));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(AttributeMapTest);
diff --git a/Swiften/Parser/UnitTest/ElementParserTester.h b/Swiften/Parser/UnitTest/ElementParserTester.h
deleted file mode 100644
index 4d84c44..0000000
--- a/Swiften/Parser/UnitTest/ElementParserTester.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef SWIFTEN_ElementParserTester_H
-#define SWIFTEN_ElementParserTester_H
-
-#include "Swiften/Parser/UnitTest/ParserTester.h"
-
-namespace Swift {
-	typedef ParserTester<ElementParser> ElementParserTester;
-}
-
-#endif
diff --git a/Swiften/Parser/UnitTest/IQParserTest.cpp b/Swiften/Parser/UnitTest/IQParserTest.cpp
deleted file mode 100644
index 22b0adc..0000000
--- a/Swiften/Parser/UnitTest/IQParserTest.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/IQParser.h"
-#include "Swiften/Parser/PayloadParserFactoryCollection.h"
-#include "Swiften/Parser/UnitTest/StanzaParserTester.h"
-
-using namespace Swift;
-
-class IQParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(IQParserTest);
-		CPPUNIT_TEST(testParse_Set);
-		CPPUNIT_TEST(testParse_Get);
-		CPPUNIT_TEST(testParse_Result);
-		CPPUNIT_TEST(testParse_Error);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		IQParserTest() {}
-
-		void setUp() {
-			factoryCollection_ = new PayloadParserFactoryCollection();
-		}
-
-		void tearDown() {
-			delete factoryCollection_;
-		}
-
-		void testParse_Set() {
-			IQParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<iq type=\"set\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(IQ::Set, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Get() {
-			IQParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<iq type=\"get\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(IQ::Get, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Result() {
-			IQParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<iq type=\"result\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(IQ::Result, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Error() {
-			IQParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<iq type=\"error\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(IQ::Error, testling.getStanzaGeneric()->getType());
-		}
-
-		private:
-			PayloadParserFactoryCollection* factoryCollection_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(IQParserTest);
diff --git a/Swiften/Parser/UnitTest/MessageParserTest.cpp b/Swiften/Parser/UnitTest/MessageParserTest.cpp
deleted file mode 100644
index 61a8d20..0000000
--- a/Swiften/Parser/UnitTest/MessageParserTest.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/MessageParser.h"
-#include "Swiften/Parser/PayloadParserFactoryCollection.h"
-#include "Swiften/Parser/UnitTest/StanzaParserTester.h"
-
-using namespace Swift;
-
-class MessageParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(MessageParserTest);
-		CPPUNIT_TEST(testParse_Normal);
-		CPPUNIT_TEST(testParse_Chat);
-		CPPUNIT_TEST(testParse_Error);
-		CPPUNIT_TEST(testParse_Groupchat);
-		CPPUNIT_TEST(testParse_Headline);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		MessageParserTest() {}
-
-		void setUp() {
-			factoryCollection_ = new PayloadParserFactoryCollection();
-		}
-
-		void tearDown() {
-			delete factoryCollection_;
-		}
-
-		void testParse_Chat() {
-			MessageParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<message type=\"chat\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Message::Chat, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Groupchat() {
-			MessageParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<message type=\"groupchat\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Message::Groupchat, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Error() {
-			MessageParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<message type=\"error\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Message::Error, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Headline() {
-			MessageParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<message type=\"headline\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Message::Headline, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Normal() {
-			MessageParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<message/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Message::Normal, testling.getStanzaGeneric()->getType());
-		}
-
-		private:
-			PayloadParserFactoryCollection* factoryCollection_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(MessageParserTest);
diff --git a/Swiften/Parser/UnitTest/ParserTester.h b/Swiften/Parser/UnitTest/ParserTester.h
deleted file mode 100644
index 7aacc8e..0000000
--- a/Swiften/Parser/UnitTest/ParserTester.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef SWIFTEN_ParserTester_H
-#define SWIFTEN_ParserTester_H
-
-#include "Swiften/Parser/XMLParserClient.h"
-#include "Swiften/Parser/PlatformXMLParserFactory.h"
-#include "Swiften/Parser/XMLParser.h"
-
-namespace Swift {
-	class XMLParser;
-
-	template<typename ParserType>
-	class ParserTester : public XMLParserClient {
-		public:
-			ParserTester(ParserType* parser) : parser_(parser) {
-				xmlParser_ = PlatformXMLParserFactory().createXMLParser(this);
-			}
-
-			~ParserTester() {
-				delete xmlParser_;
-			}
-
-			bool parse(const String& data) {
-				return xmlParser_->parse(data);
-			}
-
-			virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) {
-				parser_->handleStartElement(element, ns, attributes);
-			}
-
-			virtual void handleEndElement(const String& element, const String& ns) {
-				parser_->handleEndElement(element, ns);
-			}
-
-			virtual void handleCharacterData(const String& data) {
-				parser_->handleCharacterData(data);
-			}
-
-		private:
-			XMLParser* xmlParser_;
-			ParserType* parser_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/UnitTest/PayloadParserFactoryCollectionTest.cpp b/Swiften/Parser/UnitTest/PayloadParserFactoryCollectionTest.cpp
deleted file mode 100644
index bfd2c2c..0000000
--- a/Swiften/Parser/UnitTest/PayloadParserFactoryCollectionTest.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PayloadParserFactoryCollection.h"
-#include "Swiften/Parser/PayloadParserFactory.h"
-
-using namespace Swift;
-
-class PayloadParserFactoryCollectionTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(PayloadParserFactoryCollectionTest);
-		CPPUNIT_TEST(testGetPayloadParserFactory);
-		CPPUNIT_TEST(testGetPayloadParserFactory_NoMatchingFactory);
-		CPPUNIT_TEST(testGetPayloadParserFactory_TwoMatchingFactories);
-		CPPUNIT_TEST(testGetPayloadParserFactory_MatchWithDefaultFactory);
-		CPPUNIT_TEST(testGetPayloadParserFactory_NoMatchWithDefaultFactory);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		PayloadParserFactoryCollectionTest() {}
-
-		void setUp() {
-		}
-
-		void tearDown() {
-		}
-
-		void testGetPayloadParserFactory() {
-			PayloadParserFactoryCollection testling;
-			DummyFactory factory1("foo");
-			testling.addFactory(&factory1);
-			DummyFactory factory2("bar");
-			testling.addFactory(&factory2);
-			DummyFactory factory3("baz");
-			testling.addFactory(&factory3);
-
-			PayloadParserFactory* factory = testling.getPayloadParserFactory("bar", "", AttributeMap());
-
-			CPPUNIT_ASSERT(factory == &factory2);
-		}
-
-		void testGetPayloadParserFactory_NoMatchingFactory() {
-			PayloadParserFactoryCollection testling;
-			DummyFactory factory("foo");
-
-			CPPUNIT_ASSERT(!testling.getPayloadParserFactory("bar", "", AttributeMap()));
-		}
-
-		void testGetPayloadParserFactory_TwoMatchingFactories() {
-			PayloadParserFactoryCollection testling;
-			DummyFactory factory1("foo");
-			testling.addFactory(&factory1);
-			DummyFactory factory2("foo");
-			testling.addFactory(&factory2);
-
-			PayloadParserFactory* factory = testling.getPayloadParserFactory("foo", "", AttributeMap());
-
-			CPPUNIT_ASSERT(factory == &factory2);
-		}
-
-		void testGetPayloadParserFactory_MatchWithDefaultFactory() {
-			PayloadParserFactoryCollection testling;
-			DummyFactory factory1("foo");
-			testling.addFactory(&factory1);
-			DummyFactory factory2;
-			testling.setDefaultFactory(&factory2);
-
-			PayloadParserFactory* factory = testling.getPayloadParserFactory("foo", "", AttributeMap());
-
-			CPPUNIT_ASSERT(factory == &factory1);
-		}
-
-		void testGetPayloadParserFactory_NoMatchWithDefaultFactory() {
-			PayloadParserFactoryCollection testling;
-			DummyFactory factory1("foo");
-			testling.addFactory(&factory1);
-			DummyFactory factory2;
-			testling.setDefaultFactory(&factory2);
-
-			PayloadParserFactory* factory = testling.getPayloadParserFactory("baz", "", AttributeMap());
-
-			CPPUNIT_ASSERT(factory == &factory2);
-		}
-	
-	
-	private:
-		struct DummyFactory : public PayloadParserFactory {
-			DummyFactory(const String& element = "") : element(element) {}
-			virtual bool canParse(const String& e, const String&, const AttributeMap&) const {
-				return element.isEmpty() ? true : element == e;
-			}
-			virtual PayloadParser* createPayloadParser() { return NULL; }
-			String element;
-		};
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(PayloadParserFactoryCollectionTest);
diff --git a/Swiften/Parser/UnitTest/PresenceParserTest.cpp b/Swiften/Parser/UnitTest/PresenceParserTest.cpp
deleted file mode 100644
index 5305161..0000000
--- a/Swiften/Parser/UnitTest/PresenceParserTest.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/PresenceParser.h"
-#include "Swiften/Parser/PayloadParserFactoryCollection.h"
-#include "Swiften/Parser/UnitTest/StanzaParserTester.h"
-
-using namespace Swift;
-
-class PresenceParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(PresenceParserTest);
-		CPPUNIT_TEST(testParse_Available);
-		CPPUNIT_TEST(testParse_Unavailable);
-		CPPUNIT_TEST(testParse_Subscribe);
-		CPPUNIT_TEST(testParse_Subscribed);
-		CPPUNIT_TEST(testParse_Unsubscribe);
-		CPPUNIT_TEST(testParse_Unsubscribed);
-		CPPUNIT_TEST(testParse_Probe);
-		CPPUNIT_TEST(testParse_Error);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		PresenceParserTest() {}
-
-		void setUp() {
-			factoryCollection_ = new PayloadParserFactoryCollection();
-		}
-
-		void tearDown() {
-			delete factoryCollection_;
-		}
-
-		void testParse_Available() {
-			PresenceParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<presence/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Presence::Available, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Unavailable() {
-			PresenceParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<presence type=\"unavailable\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Presence::Unavailable, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Probe() {
-			PresenceParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<presence type=\"probe\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Presence::Probe, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Subscribe() {
-			PresenceParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<presence type=\"subscribe\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Presence::Subscribe, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Subscribed() {
-			PresenceParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<presence type=\"subscribed\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Presence::Subscribed, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Unsubscribe() {
-			PresenceParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<presence type=\"unsubscribe\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Presence::Unsubscribe, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Unsubscribed() {
-			PresenceParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<presence type=\"unsubscribed\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Presence::Unsubscribed, testling.getStanzaGeneric()->getType());
-		}
-
-		void testParse_Error() {
-			PresenceParser testling(factoryCollection_);
-			StanzaParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse("<presence type=\"error\"/>"));
-
-			CPPUNIT_ASSERT_EQUAL(Presence::Error, testling.getStanzaGeneric()->getType());
-		}
-
-		private:
-			PayloadParserFactoryCollection* factoryCollection_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(PresenceParserTest);
diff --git a/Swiften/Parser/UnitTest/SerializingParserTest.cpp b/Swiften/Parser/UnitTest/SerializingParserTest.cpp
deleted file mode 100644
index e08a3d0..0000000
--- a/Swiften/Parser/UnitTest/SerializingParserTest.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/SerializingParser.h"
-#include "Swiften/Parser/UnitTest/StanzaParserTester.h"
-
-using namespace Swift;
-
-class SerializingParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(SerializingParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST(testParse_Empty);
-		CPPUNIT_TEST(testParse_ToplevelCharacterData);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		SerializingParserTest() {}
-
-		void testParse() {
-			SerializingParser testling;
-			ParserTester<SerializingParser> parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<message type=\"chat\" to=\"me@foo.com\">"
-					"<body>Hello&lt;&amp;World</body>"
-					"<html xmlns=\"http://www.w3.org/1999/xhtml\">"
-						"foo<b>bar</b>baz"
-					"</html>"
-				"</message>"));
-
-			CPPUNIT_ASSERT_EQUAL(String(
-				"<message to=\"me@foo.com\" type=\"chat\">"
-					"<body>Hello&lt;&amp;World</body>"
-					"<html xmlns=\"http://www.w3.org/1999/xhtml\">foo<b xmlns=\"http://www.w3.org/1999/xhtml\">bar</b>baz</html>"
-				"</message>"), testling.getResult());
-		}
-
-		void testParse_Empty() {
-			SerializingParser testling;
-
-			CPPUNIT_ASSERT_EQUAL(String(""), testling.getResult());
-		}
-
-		void testParse_ToplevelCharacterData() {
-			SerializingParser testling;
-			
-			AttributeMap attributes;
-			testling.handleCharacterData("foo");
-			testling.handleStartElement("message", "", attributes);
-			testling.handleEndElement("message", "");
-			testling.handleCharacterData("bar");
-
-			CPPUNIT_ASSERT_EQUAL(String("<message/>"), testling.getResult());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(SerializingParserTest);
diff --git a/Swiften/Parser/UnitTest/StanzaParserTest.cpp b/Swiften/Parser/UnitTest/StanzaParserTest.cpp
deleted file mode 100644
index 3cb1879..0000000
--- a/Swiften/Parser/UnitTest/StanzaParserTest.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/StanzaParser.h"
-#include "Swiften/Parser/GenericPayloadParser.h"
-#include "Swiften/Parser/PayloadParserFactory.h"
-#include "Swiften/Parser/PayloadParserFactoryCollection.h"
-#include "Swiften/Elements/Stanza.h"
-#include "Swiften/Elements/Payload.h"
-
-using namespace Swift;
-
-class StanzaParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(StanzaParserTest);
-		CPPUNIT_TEST(testHandleEndElement_OnePayload);
-		CPPUNIT_TEST(testHandleEndElement_MultiplePayloads);
-		CPPUNIT_TEST(testHandleEndElement_StrayCharacterData);
-		CPPUNIT_TEST(testHandleEndElement_UnknownPayload);
-		CPPUNIT_TEST(testHandleParse_BasicAttributes);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		StanzaParserTest() {}
-
-		void setUp() {
-			factoryCollection_ = new PayloadParserFactoryCollection();
-			factoryCollection_->addFactory(&factory1_);
-			factoryCollection_->addFactory(&factory2_);
-		}
-
-		void tearDown() {
-			delete factoryCollection_;
-		}
-
-		void testHandleEndElement_OnePayload() {
-			MyStanzaParser testling(factoryCollection_);
-
-			AttributeMap attributes;
-			attributes["foo"] = "fum";
-			attributes["bar"] = "baz";
-			testling.handleStartElement("mystanza", "", attributes);
-			testling.handleStartElement("mypayload1", "", attributes);
-			testling.handleStartElement("child", "", attributes);
-			testling.handleEndElement("child", "");
-			testling.handleEndElement("mypayload1", "");
-			testling.handleEndElement("mystanza", "");
-
-			CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload1>());
-			CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload1>()->hasChild);
-		}
-
-		void testHandleEndElement_MultiplePayloads() {
-			MyStanzaParser testling(factoryCollection_);
-
-			AttributeMap attributes;
-			testling.handleStartElement("mystanza", "", attributes);
-			testling.handleStartElement("mypayload1", "", attributes);
-			testling.handleEndElement("mypayload1", "");
-			testling.handleStartElement("mypayload2", "", attributes);
-			testling.handleEndElement("mypayload2", "");
-			testling.handleEndElement("mystanza", "");
-
-			CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload1>());
-			CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload2>());
-		}
-
-		void testHandleEndElement_StrayCharacterData() {
-			MyStanzaParser testling(factoryCollection_);
-
-			AttributeMap attributes;
-			testling.handleStartElement("mystanza", "", attributes);
-			testling.handleStartElement("mypayload1", "", attributes);
-			testling.handleEndElement("mypayload1", "");
-			testling.handleCharacterData("bla");
-			testling.handleStartElement("mypayload2", "", attributes);
-			testling.handleEndElement("mypayload2", "");
-			testling.handleEndElement("mystanza", "");
-
-			CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload1>());
-			CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload2>());
-		}
-
-		void testHandleEndElement_UnknownPayload() {
-			MyStanzaParser testling(factoryCollection_);
-
-			AttributeMap attributes;
-			testling.handleStartElement("mystanza", "", attributes);
-			testling.handleStartElement("mypayload1", "", attributes);
-			testling.handleEndElement("mypayload1", "");
-			testling.handleStartElement("unknown-payload", "", attributes);
-			testling.handleStartElement("unknown-payload-child", "", attributes);
-			testling.handleEndElement("unknown-payload-child", "");
-			testling.handleEndElement("unknown-payload", "");
-			testling.handleStartElement("mypayload2", "", attributes);
-			testling.handleEndElement("mypayload2", "");
-			testling.handleEndElement("mystanza", "");
-
-			CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload1>());
-			CPPUNIT_ASSERT(testling.getStanza()->getPayload<MyPayload2>());
-		}
-
-		void testHandleParse_BasicAttributes() {
-			MyStanzaParser testling(factoryCollection_);
-
-			AttributeMap attributes;
-			attributes["to"] = "foo@example.com/blo";
-			attributes["from"] = "bar@example.com/baz";
-			attributes["id"] = "id-123";
-			testling.handleStartElement("mystanza", "", attributes);
-			testling.handleEndElement("mypayload1", "");
-
-			CPPUNIT_ASSERT_EQUAL(JID("foo@example.com/blo"), testling.getStanza()->getTo());
-			CPPUNIT_ASSERT_EQUAL(JID("bar@example.com/baz"), testling.getStanza()->getFrom());
-			CPPUNIT_ASSERT_EQUAL(String("id-123"), testling.getStanza()->getID());
-		}
-
-	private:
-		class MyPayload1 : public Payload
-		{
-			public:
-				MyPayload1() : hasChild(false) {}
-
-				bool hasChild;
-		};
-
-		class MyPayload1Parser : public GenericPayloadParser<MyPayload1>
-		{
-			public:	
-				MyPayload1Parser() {}
-
-			virtual void handleStartElement(const String& element, const String&, const AttributeMap&) { 
-				if (element != "mypayload1") {
-					getPayloadInternal()->hasChild = true;
-				}
-			}
-
-			virtual void handleEndElement(const String&, const String&) {}
-			virtual void handleCharacterData(const String&) {}
-		};
-
-		class MyPayload1ParserFactory : public PayloadParserFactory
-		{
-			public:
-				MyPayload1ParserFactory() {}
-
-				PayloadParser* createPayloadParser() { return new MyPayload1Parser(); }
-
-				bool canParse(const String& element, const String&, const AttributeMap&) const {
-					return element == "mypayload1";
-				}
-		};
-
-		class MyPayload2 : public Payload
-		{
-			public:
-				MyPayload2() {}
-		};
-
-		class MyPayload2Parser : public GenericPayloadParser<MyPayload2>
-		{
-			public:	
-				MyPayload2Parser() {}
-
-			virtual void handleStartElement(const String&, const String&, const AttributeMap&) {}
-			virtual void handleEndElement(const String&, const String&) {}
-			virtual void handleCharacterData(const String&) {}
-		};
-
-
-		class MyPayload2ParserFactory : public PayloadParserFactory
-		{
-			public:
-				MyPayload2ParserFactory() {}
-
-				PayloadParser* createPayloadParser() { return new MyPayload2Parser(); }
-				bool canParse(const String& element, const String&, const AttributeMap&) const {
-					return element == "mypayload2";
-				}
-		};
-
-		class MyStanza : public Stanza
-		{
-			public:
-				MyStanza() {}
-		};
-
-		class MyStanzaParser : public StanzaParser
-		{
-			public:
-				MyStanzaParser(PayloadParserFactoryCollection* collection) : StanzaParser(collection)
-				{
-					stanza_ = boost::shared_ptr<MyStanza>(new MyStanza());
-				}
-			
-				virtual boost::shared_ptr<Element> getElement() const {
-					return stanza_;
-				}
-
-			private:
-				boost::shared_ptr<MyStanza> stanza_;
-		};
-	
-		MyPayload1ParserFactory factory1_;
-		MyPayload2ParserFactory factory2_;
-		PayloadParserFactoryCollection* factoryCollection_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StanzaParserTest);
diff --git a/Swiften/Parser/UnitTest/StanzaParserTester.h b/Swiften/Parser/UnitTest/StanzaParserTester.h
deleted file mode 100644
index cbd484f..0000000
--- a/Swiften/Parser/UnitTest/StanzaParserTester.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef SWIFTEN_StanzaParserTester_H
-#define SWIFTEN_StanzaParserTester_H
-
-#include "Swiften/Parser/StanzaParser.h"
-#include "Swiften/Parser/UnitTest/ParserTester.h"
-
-namespace Swift {
-	typedef ParserTester<StanzaParser> StanzaParserTester;
-}
-
-#endif
diff --git a/Swiften/Parser/UnitTest/StreamFeaturesParserTest.cpp b/Swiften/Parser/UnitTest/StreamFeaturesParserTest.cpp
deleted file mode 100644
index 7fd0512..0000000
--- a/Swiften/Parser/UnitTest/StreamFeaturesParserTest.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Parser/StreamFeaturesParser.h"
-#include "Swiften/Parser/UnitTest/ElementParserTester.h"
-
-using namespace Swift;
-
-class StreamFeaturesParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(StreamFeaturesParserTest);
-		CPPUNIT_TEST(testParse);
-		CPPUNIT_TEST(testParse_Empty);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		StreamFeaturesParserTest() {}
-
-		void testParse() {
-			StreamFeaturesParser testling;
-			ElementParserTester parser(&testling);
-
-			CPPUNIT_ASSERT(parser.parse(
-				"<stream:features xmlns:stream='http://etherx.jabber.org/streams'>"
-					"<starttls xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"/>"
-					"<compression xmlns=\"http://jabber.org/features/compress\">"
-						"<method>zlib</method>"
-						"<method>lzw</method>"
-					"</compression>"
-					"<mechanisms xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">"
-						"<mechanism>DIGEST-MD5</mechanism>"
-						"<mechanism>PLAIN</mechanism>"
-					"</mechanisms>"
-					"<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\"/>"
-					"<session xmlns=\"urn:ietf:params:xml:ns:xmpp-session\"/>"
-				"</stream:features>"));
-
-			StreamFeatures* element = dynamic_cast<StreamFeatures*>(testling.getElement().get());
-			CPPUNIT_ASSERT(element->hasStartTLS());
-			CPPUNIT_ASSERT(element->hasSession());
-			CPPUNIT_ASSERT(element->hasResourceBind());
-			CPPUNIT_ASSERT(element->hasCompressionMethod("zlib"));
-			CPPUNIT_ASSERT(element->hasCompressionMethod("lzw"));
-			CPPUNIT_ASSERT(element->hasAuthenticationMechanisms());
-			CPPUNIT_ASSERT(element->hasAuthenticationMechanism("DIGEST-MD5"));
-			CPPUNIT_ASSERT(element->hasAuthenticationMechanism("PLAIN"));
-		}
-
-		void testParse_Empty() {
-			StreamFeaturesParser testling;
-			ElementParserTester parser(&testling);
-
-			parser.parse("<stream:features xmlns:stream='http://etherx.jabber.org/streams'/>");
-
-			StreamFeatures* element = dynamic_cast<StreamFeatures*>(testling.getElement().get());
-			CPPUNIT_ASSERT(!element->hasStartTLS());
-			CPPUNIT_ASSERT(!element->hasSession());
-			CPPUNIT_ASSERT(!element->hasResourceBind());
-			CPPUNIT_ASSERT(!element->hasAuthenticationMechanisms());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StreamFeaturesParserTest);
diff --git a/Swiften/Parser/UnitTest/XMLParserTest.cpp b/Swiften/Parser/UnitTest/XMLParserTest.cpp
deleted file mode 100644
index 6ef1899..0000000
--- a/Swiften/Parser/UnitTest/XMLParserTest.cpp
+++ /dev/null
@@ -1,229 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <vector>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Parser/XMLParserClient.h"
-#ifdef HAVE_EXPAT
-#include "Swiften/Parser/ExpatParser.h"
-#endif
-#ifdef HAVE_LIBXML
-#include "Swiften/Parser/LibXMLParser.h"
-#endif
-
-using namespace Swift;
-
-template <typename ParserType>
-class XMLParserTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(XMLParserTest);
-		CPPUNIT_TEST(testParse_NestedElements);
-		CPPUNIT_TEST(testParse_ElementInNamespacedElement);
-		CPPUNIT_TEST(testParse_CharacterData);
-		CPPUNIT_TEST(testParse_NamespacePrefix);
-		CPPUNIT_TEST(testParse_UnhandledXML);
-		CPPUNIT_TEST(testParse_InvalidXML);
-		CPPUNIT_TEST(testParse_InErrorState);
-		CPPUNIT_TEST(testParse_Incremental);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testParse_NestedElements() {
-			ParserType testling(&client_);
-
-			CPPUNIT_ASSERT(testling.parse(
-				"<iq type=\"get\">"
-				"<query xmlns='jabber:iq:version'/>"
-				"</iq>"));
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), client_.events.size());
-
-			CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type);
-			CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[0].data);
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), client_.events[0].attributes.size());
-			CPPUNIT_ASSERT_EQUAL(String("get"), client_.events[0].attributes["type"]);
-			CPPUNIT_ASSERT_EQUAL(String(), client_.events[0].ns);
-
-			CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[1].type);
-			CPPUNIT_ASSERT_EQUAL(String("query"), client_.events[1].data);
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), client_.events[1].attributes.size());
-			CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[1].ns);
-
-			CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[2].type);
-			CPPUNIT_ASSERT_EQUAL(String("query"), client_.events[2].data);
-			CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[2].ns);
-
-			CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[3].type);
-			CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[3].data);
-			CPPUNIT_ASSERT_EQUAL(String(), client_.events[3].ns);
-		}
-
-		void testParse_ElementInNamespacedElement() {
-			ParserType testling(&client_);
-
-			CPPUNIT_ASSERT(testling.parse(
-				"<query xmlns='jabber:iq:version'>"
-					"<name>Swift</name>"
-				"</query>"));
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(5), client_.events.size());
-
-			CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type);
-			CPPUNIT_ASSERT_EQUAL(String("query"), client_.events[0].data);
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), client_.events[0].attributes.size());
-			CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[0].ns);
-
-			CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[1].type);
-			CPPUNIT_ASSERT_EQUAL(String("name"), client_.events[1].data);
-			CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[1].ns);
-
-			CPPUNIT_ASSERT_EQUAL(Client::CharacterData, client_.events[2].type);
-			CPPUNIT_ASSERT_EQUAL(String("Swift"), client_.events[2].data);
-
-			CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[3].type);
-			CPPUNIT_ASSERT_EQUAL(String("name"), client_.events[3].data);
-			CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[3].ns);
-
-			CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[4].type);
-			CPPUNIT_ASSERT_EQUAL(String("query"), client_.events[4].data);
-			CPPUNIT_ASSERT_EQUAL(String("jabber:iq:version"), client_.events[4].ns);
-		}
-
-		void testParse_CharacterData() {
-			ParserType testling(&client_);
-
-			CPPUNIT_ASSERT(testling.parse("<html>bla<i>bli</i>blo</html>"));
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(7), client_.events.size());
-
-			CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type);
-			CPPUNIT_ASSERT_EQUAL(String("html"), client_.events[0].data);
-
-			CPPUNIT_ASSERT_EQUAL(Client::CharacterData, client_.events[1].type);
-			CPPUNIT_ASSERT_EQUAL(String("bla"), client_.events[1].data);
-
-			CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[2].type);
-			CPPUNIT_ASSERT_EQUAL(String("i"), client_.events[2].data);
-
-			CPPUNIT_ASSERT_EQUAL(Client::CharacterData, client_.events[3].type);
-			CPPUNIT_ASSERT_EQUAL(String("bli"), client_.events[3].data);
-
-			CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[4].type);
-			CPPUNIT_ASSERT_EQUAL(String("i"), client_.events[4].data);
-
-			CPPUNIT_ASSERT_EQUAL(Client::CharacterData, client_.events[5].type);
-			CPPUNIT_ASSERT_EQUAL(String("blo"), client_.events[5].data);
-
-			CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[6].type);
-			CPPUNIT_ASSERT_EQUAL(String("html"), client_.events[6].data);
-		}
-
-		void testParse_NamespacePrefix() {
-			ParserType testling(&client_);
-
-			CPPUNIT_ASSERT(testling.parse("<p:x xmlns:p='bla'><p:y/></p:x>"));
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), client_.events.size());
-
-			CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type);
-			CPPUNIT_ASSERT_EQUAL(String("x"), client_.events[0].data);
-			CPPUNIT_ASSERT_EQUAL(String("bla"), client_.events[0].ns);
-
-			CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[1].type);
-			CPPUNIT_ASSERT_EQUAL(String("y"), client_.events[1].data);
-			CPPUNIT_ASSERT_EQUAL(String("bla"), client_.events[1].ns);
-
-			CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[2].type);
-			CPPUNIT_ASSERT_EQUAL(String("y"), client_.events[2].data);
-			CPPUNIT_ASSERT_EQUAL(String("bla"), client_.events[2].ns);
-
-			CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[3].type);
-			CPPUNIT_ASSERT_EQUAL(String("x"), client_.events[3].data);
-			CPPUNIT_ASSERT_EQUAL(String("bla"), client_.events[3].ns);
-		}
-
-		void testParse_UnhandledXML() {
-			ParserType testling(&client_);
-
-			CPPUNIT_ASSERT(testling.parse("<iq><!-- Testing --></iq>"));
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), client_.events.size());
-
-			CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type);
-			CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[0].data);
-
-			CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[1].type);
-			CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[1].data);
-		}
-
-		void testParse_InvalidXML() {
-			ParserType testling(&client_);
-
-			CPPUNIT_ASSERT(!testling.parse("<iq><bla></iq>"));
-		}
-
-		void testParse_InErrorState() {
-			ParserType testling(&client_);
-
-			CPPUNIT_ASSERT(!testling.parse("<iq><bla></iq>"));
-			CPPUNIT_ASSERT(!testling.parse("<iq/>"));
-		}
-
-		void testParse_Incremental() {
-			ParserType testling(&client_);
-
-			CPPUNIT_ASSERT(testling.parse("<iq"));
-			CPPUNIT_ASSERT(testling.parse("></iq>"));
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), client_.events.size());
-
-			CPPUNIT_ASSERT_EQUAL(Client::StartElement, client_.events[0].type);
-			CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[0].data);
-
-			CPPUNIT_ASSERT_EQUAL(Client::EndElement, client_.events[1].type);
-			CPPUNIT_ASSERT_EQUAL(String("iq"), client_.events[1].data);
-		}
-	
-	private:
-		class Client : public XMLParserClient {
-			public:
-				enum Type { StartElement, EndElement, CharacterData };
-				struct Event {
-					Event(
-							Type type, 
-							const String& data, 
-							const String& ns,
-							const AttributeMap& attributes)
-								: type(type), data(data), ns(ns), attributes(attributes) {}
-					Event(Type type, const String& data, const String& ns = String())
-								: type(type), data(data), ns(ns) {}
-
-					Type type;
-					String data;
-					String ns;
-					AttributeMap attributes;
-				};
-
-				Client() {}
-
-				virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) {
-					events.push_back(Event(StartElement, element, ns, attributes));
-				}
-
-				virtual void handleEndElement(const String& element, const String& ns) {
-					events.push_back(Event(EndElement, element, ns));
-				}
-
-				virtual void handleCharacterData(const String& data) {
-					events.push_back(Event(CharacterData, data));
-				}
-
-				std::vector<Event> events;
-		} client_;
-};
-
-#ifdef HAVE_EXPAT
-CPPUNIT_TEST_SUITE_REGISTRATION(XMLParserTest<ExpatParser>);
-#endif
-#ifdef HAVE_LIBXML
-CPPUNIT_TEST_SUITE_REGISTRATION(XMLParserTest<LibXMLParser>);
-#endif
diff --git a/Swiften/Parser/UnitTest/XMPPParserTest.cpp b/Swiften/Parser/UnitTest/XMPPParserTest.cpp
deleted file mode 100644
index ecdd565..0000000
--- a/Swiften/Parser/UnitTest/XMPPParserTest.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <vector>
-
-#include "Swiften/Elements/ProtocolHeader.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Parser/XMPPParser.h"
-#include "Swiften/Parser/ElementParser.h"
-#include "Swiften/Parser/XMPPParserClient.h"
-#include "Swiften/Parser/PayloadParserFactoryCollection.h"
-#include "Swiften/Elements/Presence.h"
-#include "Swiften/Elements/IQ.h"
-#include "Swiften/Elements/Message.h"
-#include "Swiften/Elements/StreamFeatures.h"
-#include "Swiften/Elements/UnknownElement.h"
-
-using namespace Swift;
-
-class XMPPParserTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(XMPPParserTest);
-		CPPUNIT_TEST(testParse_SimpleSession);
-		CPPUNIT_TEST(testParse_SimpleClientFromServerSession);
-		CPPUNIT_TEST(testParse_Presence);
-		CPPUNIT_TEST(testParse_IQ);
-		CPPUNIT_TEST(testParse_Message);
-		CPPUNIT_TEST(testParse_StreamFeatures);
-		CPPUNIT_TEST(testParse_UnknownElement);
-		CPPUNIT_TEST(testParse_StrayCharacterData);
-		CPPUNIT_TEST(testParse_InvalidStreamStart);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		XMPPParserTest() {}
-
-		void testParse_SimpleSession() {
-			XMPPParser testling(&client_, &factories_);
-
-			CPPUNIT_ASSERT(testling.parse("<?xml version='1.0'?>"));
-			CPPUNIT_ASSERT(testling.parse("<stream:stream to='example.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' >"));
-			CPPUNIT_ASSERT(testling.parse("<presence/>"));
-			CPPUNIT_ASSERT(testling.parse("<presence/>"));
-			CPPUNIT_ASSERT(testling.parse("<iq/>"));
-			CPPUNIT_ASSERT(testling.parse("</stream:stream>"));
-
-			CPPUNIT_ASSERT_EQUAL(5, static_cast<int>(client_.events.size()));
-			CPPUNIT_ASSERT_EQUAL(Client::StreamStart, client_.events[0].type);
-			CPPUNIT_ASSERT_EQUAL(String("example.com"), client_.events[0].to); 
-			CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[1].type);
-			CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[2].type);
-			CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[3].type);
-			CPPUNIT_ASSERT_EQUAL(Client::StreamEnd, client_.events[4].type);
-		}
-
-		void testParse_SimpleClientFromServerSession() {
-			XMPPParser testling(&client_, &factories_);
-
-			CPPUNIT_ASSERT(testling.parse("<?xml version='1.0'?>"));
-			CPPUNIT_ASSERT(testling.parse("<stream:stream from='example.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='aeab'>"));
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(client_.events.size()));
-			CPPUNIT_ASSERT_EQUAL(Client::StreamStart, client_.events[0].type);
-			CPPUNIT_ASSERT_EQUAL(String("example.com"), client_.events[0].from); 
-			CPPUNIT_ASSERT_EQUAL(String("aeab"), client_.events[0].id); 
-		}
-
-
-		void testParse_Presence() {
-			XMPPParser testling(&client_, &factories_);
-
-			CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>"));
-			CPPUNIT_ASSERT(testling.parse("<presence/>"));
-
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(client_.events.size()));
-			CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[1].type);
-			CPPUNIT_ASSERT(dynamic_cast<Presence*>(client_.events[1].element.get()));
-		}
-
-		void testParse_IQ() {
-			XMPPParser testling(&client_, &factories_);
-
-			CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>"));
-			CPPUNIT_ASSERT(testling.parse("<iq/>"));
-
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(client_.events.size()));
-			CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[1].type);
-			CPPUNIT_ASSERT(dynamic_cast<IQ*>(client_.events[1].element.get()));
-		}
-
-		void testParse_Message() {
-			XMPPParser testling(&client_, &factories_);
-
-			CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>"));
-			CPPUNIT_ASSERT(testling.parse("<message/>"));
-
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(client_.events.size()));
-			CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[1].type);
-			CPPUNIT_ASSERT(dynamic_cast<Message*>(client_.events[1].element.get()));
-		}
-
-		void testParse_StreamFeatures() {
-			XMPPParser testling(&client_, &factories_);
-
-			CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>"));
-			CPPUNIT_ASSERT(testling.parse("<stream:features/>"));
-
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(client_.events.size()));
-			CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[1].type);
-			CPPUNIT_ASSERT(dynamic_cast<StreamFeatures*>(client_.events[1].element.get()));
-		}
-
-		void testParse_UnknownElement() {
-			XMPPParser testling(&client_, &factories_);
-
-			CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>"));
-			CPPUNIT_ASSERT(testling.parse("<presence/>"));
-			CPPUNIT_ASSERT(testling.parse("<foo/>"));
-			CPPUNIT_ASSERT(testling.parse("<bar/>"));
-			CPPUNIT_ASSERT(testling.parse("<presence/>"));
-
-			CPPUNIT_ASSERT_EQUAL(5, static_cast<int>(client_.events.size()));
-			CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[2].type);
-			CPPUNIT_ASSERT(dynamic_cast<UnknownElement*>(client_.events[2].element.get()));
-			CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[3].type);
-			CPPUNIT_ASSERT(dynamic_cast<UnknownElement*>(client_.events[3].element.get()));
-			CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[4].type);
-			CPPUNIT_ASSERT(dynamic_cast<Presence*>(client_.events[4].element.get()));
-		}
-
-		void testParse_StrayCharacterData() {
-			XMPPParser testling(&client_, &factories_);
-
-			CPPUNIT_ASSERT(testling.parse("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'>"));
-			CPPUNIT_ASSERT(testling.parse("<presence/>"));
-			CPPUNIT_ASSERT(testling.parse("bla"));
-			CPPUNIT_ASSERT(testling.parse("<iq/>"));
-
-			CPPUNIT_ASSERT_EQUAL(3, static_cast<int>(client_.events.size()));
-			CPPUNIT_ASSERT_EQUAL(Client::ElementEvent, client_.events[2].type);
-			CPPUNIT_ASSERT(dynamic_cast<IQ*>(client_.events[2].element.get()));
-		}
-
-		void testParse_InvalidStreamStart() {
-			XMPPParser testling(&client_, &factories_);
-
-			CPPUNIT_ASSERT(!testling.parse("<tream>"));
-		}
-
-	private:
-		class Client : public XMPPParserClient {
-			public:
-				enum Type { StreamStart, ElementEvent, StreamEnd };
-				struct Event {
-					Event(Type type, boost::shared_ptr<Element> element) 
-						: type(type), element(element) {}
-					Event(Type type, const String& from, const String& to, const String& id) : type(type), from(from), to(to), id(id) {}
-
-					Event(Type type) : type(type) {}
-
-					Type type;
-					String from;
-					String to;
-					String id;
-					boost::shared_ptr<Element> element;
-				};
-
-				Client() {}
-
-				void handleStreamStart(const ProtocolHeader& header) {
-					events.push_back(Event(StreamStart, header.getFrom(), header.getTo(), header.getID()));
-				}
-
-				void handleElement(boost::shared_ptr<Element> element) {
-					events.push_back(Event(ElementEvent, element));
-				}
-
-				void handleStreamEnd() {
-					events.push_back(Event(StreamEnd));
-				}
-
-				std::vector<Event> events;
-		} client_;
-		PayloadParserFactoryCollection factories_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(XMPPParserTest);
diff --git a/Swiften/Parser/UnknownElementParser.h b/Swiften/Parser/UnknownElementParser.h
deleted file mode 100644
index c016664..0000000
--- a/Swiften/Parser/UnknownElementParser.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_UnknownElementParser_H
-#define SWIFTEN_UnknownElementParser_H
-
-#include "Swiften/Parser/GenericElementParser.h"
-#include "Swiften/Elements/UnknownElement.h"
-
-namespace Swift {
-	class UnknownElementParser : public GenericElementParser<UnknownElement> {
-		public:
-			UnknownElementParser() : GenericElementParser<UnknownElement>() {}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/UnknownPayloadParser.h b/Swiften/Parser/UnknownPayloadParser.h
deleted file mode 100644
index ad56885..0000000
--- a/Swiften/Parser/UnknownPayloadParser.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef SWIFTEN_UNKNOWNPAYLOADPARSER_H
-#define SWIFTEN_UNKNOWNPAYLOADPARSER_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Parser/PayloadParser.h"
-
-namespace Swift {
-	class String;
-
-	class UnknownPayloadParser : public PayloadParser {
-		public:
-			UnknownPayloadParser() {}
-
-			virtual void handleStartElement(const String&, const String&, const AttributeMap&) {}
-			virtual void handleEndElement(const String&, const String&) {}
-			virtual void handleCharacterData(const String&) {}
-
-			virtual boost::shared_ptr<Payload> getPayload() const {
-				return boost::shared_ptr<Payload>();
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/XMLParser.cpp b/Swiften/Parser/XMLParser.cpp
deleted file mode 100644
index a827e99..0000000
--- a/Swiften/Parser/XMLParser.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "Swiften/Parser/XMLParser.h"
-
-namespace Swift {
-
-XMLParser::XMLParser(XMLParserClient* client) : client_(client) {
-}
-
-XMLParser::~XMLParser() {
-}
-
-}
diff --git a/Swiften/Parser/XMLParser.h b/Swiften/Parser/XMLParser.h
deleted file mode 100644
index 7ed90db..0000000
--- a/Swiften/Parser/XMLParser.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef SWIFTEN_XMLParser_H
-#define SWIFTEN_XMLParser_H
-
-namespace Swift {
-	class String;
-	class XMLParserClient;
-
-	class XMLParser {
-		public:
-			XMLParser(XMLParserClient* client);
-			virtual ~XMLParser();
-
-			virtual bool parse(const String& data) = 0;
-
-		protected:
-			XMLParserClient* getClient() const {
-				return client_;
-			}
-
-		private:
-			XMLParserClient* client_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/XMLParserClient.cpp b/Swiften/Parser/XMLParserClient.cpp
deleted file mode 100644
index 53a103f..0000000
--- a/Swiften/Parser/XMLParserClient.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "Swiften/Parser/XMLParserClient.h"
-
-namespace Swift {
-
-XMLParserClient::~XMLParserClient() {
-}
-
-}
-
diff --git a/Swiften/Parser/XMLParserClient.h b/Swiften/Parser/XMLParserClient.h
deleted file mode 100644
index 7179ac6..0000000
--- a/Swiften/Parser/XMLParserClient.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef XMLPARSERCLIENT_H
-#define XMLPARSERCLIENT_H
-
-#include "Swiften/Parser/AttributeMap.h"
-
-namespace Swift {
-	class String;
-
-	class XMLParserClient {
-		public:
-			virtual ~XMLParserClient();
-
-			virtual void handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) = 0;
-			virtual void handleEndElement(const String& element, const String& ns) = 0;
-			virtual void handleCharacterData(const String& data) = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/XMLParserFactory.cpp b/Swiften/Parser/XMLParserFactory.cpp
deleted file mode 100644
index e21bb5c..0000000
--- a/Swiften/Parser/XMLParserFactory.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Parser/XMLParserFactory.h"
-
-namespace Swift {
-
-XMLParserFactory::~XMLParserFactory() {
-}
-
-}
diff --git a/Swiften/Parser/XMLParserFactory.h b/Swiften/Parser/XMLParserFactory.h
deleted file mode 100644
index 8d67b17..0000000
--- a/Swiften/Parser/XMLParserFactory.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_XMLParserFactory_H
-#define SWIFTEN_XMLParserFactory_H
-
-namespace Swift {
-	class XMLParser;
-	class XMLParserClient;
-
-	class XMLParserFactory {
-		public:
-			virtual ~XMLParserFactory();
-
-			virtual XMLParser* createXMLParser(XMLParserClient*) = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/XMPPParser.cpp b/Swiften/Parser/XMPPParser.cpp
deleted file mode 100644
index 83de263..0000000
--- a/Swiften/Parser/XMPPParser.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-#include "Swiften/Parser/XMPPParser.h"
-
-#include <iostream>
-#include <cassert>
-
-#include "Swiften/Elements/ProtocolHeader.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Parser/XMLParser.h"
-#include "Swiften/Parser/PlatformXMLParserFactory.h"
-#include "Swiften/Parser/XMPPParserClient.h"
-#include "Swiften/Parser/XMPPParser.h"
-#include "Swiften/Parser/ElementParser.h"
-#include "Swiften/Parser/PresenceParser.h"
-#include "Swiften/Parser/IQParser.h"
-#include "Swiften/Parser/MessageParser.h"
-#include "Swiften/Parser/StreamFeaturesParser.h"
-#include "Swiften/Parser/AuthRequestParser.h"
-#include "Swiften/Parser/AuthSuccessParser.h"
-#include "Swiften/Parser/AuthFailureParser.h"
-#include "Swiften/Parser/AuthChallengeParser.h"
-#include "Swiften/Parser/AuthResponseParser.h"
-#include "Swiften/Parser/StartTLSParser.h"
-#include "Swiften/Parser/StartTLSFailureParser.h"
-#include "Swiften/Parser/CompressParser.h"
-#include "Swiften/Parser/CompressFailureParser.h"
-#include "Swiften/Parser/CompressedParser.h"
-#include "Swiften/Parser/UnknownElementParser.h"
-#include "Swiften/Parser/TLSProceedParser.h"
-
-// TODO: Whenever an error occurs in the handlers, stop the parser by returing
-// a bool value, and stopping the XML parser
-
-namespace Swift {
-
-XMPPParser::XMPPParser(
-		XMPPParserClient* client, 
-		PayloadParserFactoryCollection* payloadParserFactories) : 
-				xmlParser_(0),
-				client_(client), 
-				payloadParserFactories_(payloadParserFactories), 
-				currentDepth_(0),
-				currentElementParser_(0),
-				parseErrorOccurred_(false) {
-	xmlParser_ = PlatformXMLParserFactory().createXMLParser(this);
-}
-
-XMPPParser::~XMPPParser() {
-	delete currentElementParser_;
-	delete xmlParser_;
-}
-
-bool XMPPParser::parse(const String& data) {
-	bool xmlParseResult = xmlParser_->parse(data);
-	return xmlParseResult && !parseErrorOccurred_;
-}
-
-void XMPPParser::handleStartElement(const String& element, const String& ns, const AttributeMap& attributes) {
-	if (!inStream()) {
-		if (element == "stream" && ns == "http://etherx.jabber.org/streams") {
-			ProtocolHeader header;
-			header.setFrom(attributes.getAttribute("from"));
-			header.setTo(attributes.getAttribute("to"));
-			header.setID(attributes.getAttribute("id"));
-			header.setVersion(attributes.getAttribute("version"));
-			client_->handleStreamStart(header);
-		}
-		else {
-			parseErrorOccurred_ = true;
-		}
-	}
-	else {
-		if (!inElement()) {
-			assert(!currentElementParser_);
-			delete currentElementParser_;
-			currentElementParser_ = createElementParser(element, ns);
-		}
-		currentElementParser_->handleStartElement(element, ns, attributes);
-	}
-	++currentDepth_;
-}
-
-void XMPPParser::handleEndElement(const String& element, const String& ns) {
-	assert(inStream());
-	if (inElement()) {
-		assert(currentElementParser_);
-		currentElementParser_->handleEndElement(element, ns);
-		--currentDepth_;
-		if (!inElement()) {
-			client_->handleElement(currentElementParser_->getElement());
-			delete currentElementParser_;
-			currentElementParser_ = 0;
-		}
-	}
-	else {
-		assert(element == "stream");
-		--currentDepth_;
-		client_->handleStreamEnd();
-	}
-}
-
-void XMPPParser::handleCharacterData(const String& data) {
-	if (currentElementParser_) {
-		currentElementParser_->handleCharacterData(data);
-	}
-	//else {
-	//	std::cerr << "XMPPParser: Ignoring stray character data: " << data << std::endl;
-	//}
-}
-
-ElementParser* XMPPParser::createElementParser(const String& element, const String& ns) {
-	if (element == "presence") {
-		return new PresenceParser(payloadParserFactories_);
-	}
-	else if (element == "iq") {
-		return new IQParser(payloadParserFactories_);
-	}
-	else if (element == "message") {
-		return new MessageParser(payloadParserFactories_);
-	}
-	else if (element == "features"  && ns == "http://etherx.jabber.org/streams") {
-		return new StreamFeaturesParser();
-	}
-	else if (element == "auth") {
-		return new AuthRequestParser();
-	}
-	else if (element == "success") {
-		return new AuthSuccessParser();
-	}
-	else if (element == "failure" && ns == "urn:ietf:params:xml:ns:xmpp-sasl") {
-		return new AuthFailureParser();
-	}
-	else if (element == "challenge" && ns == "urn:ietf:params:xml:ns:xmpp-sasl") {
-		return new AuthChallengeParser();
-	}
-	else if (element == "response" && ns == "urn:ietf:params:xml:ns:xmpp-sasl") {
-		return new AuthResponseParser();
-	}
-	else if (element == "starttls") {
-		return new StartTLSParser();
-	}
-	else if (element == "failure" && ns == "urn:ietf:params:xml:ns:xmpp-tls") {
-		return new StartTLSFailureParser();
-	}
-	else if (element == "compress") {
-		return new CompressParser();
-	}
-	else if (element == "compressed") {
-		return new CompressedParser();
-	}
-	else if (element == "failure" && ns == "http://jabber.org/protocol/compress") {
-		return new CompressFailureParser();
-	}
-	else if (element == "proceed") {
-		return new TLSProceedParser();
-	}
-	return new UnknownElementParser();
-}
-
-}
diff --git a/Swiften/Parser/XMPPParser.h b/Swiften/Parser/XMPPParser.h
deleted file mode 100644
index 9e1109d..0000000
--- a/Swiften/Parser/XMPPParser.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef SWIFTEN_XMPPPARSER_H
-#define SWIFTEN_XMPPPARSER_H
-
-#include <boost/shared_ptr.hpp>
-#include <boost/noncopyable.hpp>
-
-#include "Swiften/Parser/XMLParserClient.h"
-#include "Swiften/Parser/AttributeMap.h"
-
-namespace Swift {
-	class XMLParser;
-	class XMPPParserClient;
-	class String;
-	class ElementParser;
-	class PayloadParserFactoryCollection;
-
-	class XMPPParser : public XMLParserClient, boost::noncopyable {
-		public:
-			XMPPParser(
-					XMPPParserClient* parserClient, 
-					PayloadParserFactoryCollection* payloadParserFactories);
-			~XMPPParser();
-
-			bool parse(const String&);
-
-		private:
-			virtual void handleStartElement(
-					const String& element, 
-					const String& ns, 
-					const AttributeMap& attributes);
-			virtual void handleEndElement(const String& element, const String& ns);
-			virtual void handleCharacterData(const String& data);
-
-			bool inStream() const {
-				return currentDepth_ > 0;
-			}
-
-			bool inElement() const {
-				return currentDepth_ > 1;
-			}
-
-			ElementParser* createElementParser(const String& element, const String& xmlns);
-
-		private:
-			XMLParser* xmlParser_;
-			XMPPParserClient* client_;
-			PayloadParserFactoryCollection* payloadParserFactories_;
-			int currentDepth_;
-			ElementParser* currentElementParser_;
-			bool parseErrorOccurred_;
-	};
-}
-
-#endif
diff --git a/Swiften/Parser/XMPPParserClient.cpp b/Swiften/Parser/XMPPParserClient.cpp
deleted file mode 100644
index 66ea917..0000000
--- a/Swiften/Parser/XMPPParserClient.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Parser/XMPPParserClient.h"
-
-namespace Swift {
-
-XMPPParserClient::~XMPPParserClient() {
-}
-
-}
diff --git a/Swiften/Parser/XMPPParserClient.h b/Swiften/Parser/XMPPParserClient.h
deleted file mode 100644
index b8f8e46..0000000
--- a/Swiften/Parser/XMPPParserClient.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class String;
-	class ProtocolHeader;
-
-	class XMPPParserClient {
-		public:
-			virtual ~XMPPParserClient();
-
-			virtual void handleStreamStart(const ProtocolHeader&) = 0;
-			virtual void handleElement(boost::shared_ptr<Element>) = 0;
-			virtual void handleStreamEnd() = 0;
-	};
-}
diff --git a/Swiften/Presence/PresenceOracle.cpp b/Swiften/Presence/PresenceOracle.cpp
deleted file mode 100644
index 988fc10..0000000
--- a/Swiften/Presence/PresenceOracle.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-#include "PresenceOracle.h"
-
-#include <boost/bind.hpp>
-#include "Swiften/Client/StanzaChannel.h"
-namespace Swift {
-
-typedef std::pair<JID, std::map<JID, boost::shared_ptr<Presence> > > JIDMapPair;
-typedef std::pair<JID, boost::shared_ptr<Presence> > JIDPresencePair;
-
-PresenceOracle::PresenceOracle(StanzaChannel* stanzaChannel) {
-	stanzaChannel_ = stanzaChannel;
-	stanzaChannel_->onPresenceReceived.connect(boost::bind(&PresenceOracle::handleIncomingPresence, this, _1));
-}
-
-void PresenceOracle::cancelSubscription(const JID& jid) {
-	boost::shared_ptr<Presence> stanza(new Presence());
-	stanza->setType(Presence::Unsubscribed);
-	stanza->setTo(jid);
-	stanzaChannel_->sendPresence(stanza);
-}
-
-void PresenceOracle::confirmSubscription(const JID& jid) {
-	boost::shared_ptr<Presence> stanza(new Presence());
-	stanza->setType(Presence::Subscribed);
-	stanza->setTo(jid);
-	stanzaChannel_->sendPresence(stanza);
-}
-
-
-void PresenceOracle::requestSubscription(const JID& jid) {
-	boost::shared_ptr<Presence> stanza(new Presence());
-	stanza->setType(Presence::Subscribe);
-	stanza->setTo(jid);
-	stanzaChannel_->sendPresence(stanza);
-}
-
-
-void PresenceOracle::handleIncomingPresence(boost::shared_ptr<Presence> presence) {
-	JID bareJID = JID(presence->getFrom().toBare());
-
-	if (presence->getType() == Presence::Subscribe) {
-		onPresenceSubscriptionRequest(bareJID, presence->getStatus());
-	} else {
-		std::map<JID, boost::shared_ptr<Presence> > jidMap = entries_[bareJID];
-		boost::shared_ptr<Presence> last;
-		foreach(JIDPresencePair pair, jidMap) {
-			if (pair.first == presence->getFrom()) {
-				last = pair.second;
-				break;
-			}
-		}
-		jidMap[presence->getFrom()] = presence;
-		entries_[bareJID] = jidMap;
-		onPresenceChange(presence, last);
-	}
-}
-
-}
diff --git a/Swiften/Presence/PresenceOracle.h b/Swiften/Presence/PresenceOracle.h
deleted file mode 100644
index dc6fe5d..0000000
--- a/Swiften/Presence/PresenceOracle.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Presence.h"
-
-#include <map>
-#include <boost/signal.hpp>
-
-namespace Swift {
-class StanzaChannel;
-
-class PresenceOracle {
-	public:
-		PresenceOracle(StanzaChannel* stanzaChannel);
-		~PresenceOracle() {};
-
-		void cancelSubscription(const JID& jid);
-		void confirmSubscription(const JID& jid);
-		void requestSubscription(const JID& jid);
-
-		boost::signal<void (boost::shared_ptr<Presence>, boost::shared_ptr<Presence>)> onPresenceChange;
-		boost::signal<void (const JID&, const String&)> onPresenceSubscriptionRequest;
-
-	private:
-		void handleIncomingPresence(boost::shared_ptr<Presence> presence);
-		std::map<JID, std::map<JID, boost::shared_ptr<Presence> > > entries_;
-		StanzaChannel* stanzaChannel_;
-};
-}
-
diff --git a/Swiften/Presence/PresenceSender.cpp b/Swiften/Presence/PresenceSender.cpp
deleted file mode 100644
index 8e7ef68..0000000
--- a/Swiften/Presence/PresenceSender.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "Swiften/Presence/PresenceSender.h"
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Client/StanzaChannel.h"
-
-namespace Swift {
-
-PresenceSender::PresenceSender(StanzaChannel* channel) : channel(channel) {
-}
-
-void PresenceSender::sendPresence(boost::shared_ptr<Presence> presence) {
-	if (!channel->isAvailable()) {
-		return;
-	}
-
-	channel->sendPresence(presence);
-
-	if (!presence->getTo().isValid()) {
-		boost::shared_ptr<Presence> presenceCopy(new Presence(*presence));
-		foreach(const JID& jid, directedPresenceReceivers) {
-			presenceCopy->setTo(jid);
-			channel->sendPresence(presenceCopy);
-		}
-
-		lastSentUndirectedPresence = presence;
-	}
-}
-
-void PresenceSender::addDirectedPresenceReceiver(const JID& jid) {
-	directedPresenceReceivers.insert(jid);
-	if (channel->isAvailable()) {
-		if (lastSentUndirectedPresence && lastSentUndirectedPresence->getType() == Presence::Available) {
-			boost::shared_ptr<Presence> presenceCopy(new Presence(*lastSentUndirectedPresence));
-			presenceCopy->setTo(jid);
-			channel->sendPresence(presenceCopy);
-		}
-	}
-}
-
-void PresenceSender::removeDirectedPresenceReceiver(const JID& jid) {
-	directedPresenceReceivers.erase(jid);
-	if (channel->isAvailable()) {
-		boost::shared_ptr<Presence> presence(new Presence());
-		presence->setType(Presence::Unavailable);
-		presence->setTo(jid);
-		channel->sendPresence(presence);
-	}
-}
-
-}
diff --git a/Swiften/Presence/PresenceSender.h b/Swiften/Presence/PresenceSender.h
deleted file mode 100644
index ef69447..0000000
--- a/Swiften/Presence/PresenceSender.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-#include <set>
-
-#include "Swiften/Elements/Presence.h"
-
-namespace Swift {
-	class StanzaChannel;
-
-	class PresenceSender {
-		public:
-			PresenceSender(StanzaChannel*);
-
-			void addDirectedPresenceReceiver(const JID&);
-			void removeDirectedPresenceReceiver(const JID&);
-
-			void sendPresence(boost::shared_ptr<Presence>);
-
-		private:
-			boost::shared_ptr<Presence> lastSentUndirectedPresence;
-			StanzaChannel* channel;
-			std::set<JID> directedPresenceReceivers;
-	};
-}
diff --git a/Swiften/Presence/UnitTest/PresenceOracleTest.cpp b/Swiften/Presence/UnitTest/PresenceOracleTest.cpp
deleted file mode 100644
index 2c9c526..0000000
--- a/Swiften/Presence/UnitTest/PresenceOracleTest.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/bind.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/optional.hpp>
-
-#include "Swiften/Presence/PresenceOracle.h"
-#include "Swiften/Client/DummyStanzaChannel.h"
-
-using namespace Swift;
-
-class PresencePointerPair {
-	public:
-		boost::shared_ptr<Presence> one;
-		boost::shared_ptr<Presence> two;
-};
-
-class SubscriptionRequestInfo {
-	public:
-		boost::optional<JID> jid;
-		boost::optional<String> reason;
-};
-
-class PresenceOracleTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(PresenceOracleTest);
-		CPPUNIT_TEST(testFirstPresence);
-		CPPUNIT_TEST(testSecondPresence);
-		CPPUNIT_TEST(testSubscriptionRequest);
-		CPPUNIT_TEST_SUITE_END();
-
-	private:
-		PresenceOracle* oracle_;
-		DummyStanzaChannel* stanzaChannel_;
-
-	public:
-
-		void handlePresenceChange(boost::shared_ptr<Presence> newPresence, boost::shared_ptr<Presence> lastPresence, PresencePointerPair* out) {
-			CPPUNIT_ASSERT(out->one.get() == NULL);
-			CPPUNIT_ASSERT(out->two.get() == NULL);
-			out->one = newPresence;
-			out->two = lastPresence;
-			CPPUNIT_ASSERT(newPresence.get());
-			CPPUNIT_ASSERT_EQUAL(newPresence, out->one);
-		}
-		
-		void handlePresenceSubscriptionRequest(const JID& jid, const String& reason, SubscriptionRequestInfo* info) {
-			CPPUNIT_ASSERT(!info->jid);
-			CPPUNIT_ASSERT(!info->reason);
-			info->jid = jid;
-			info->reason = reason;
-		}
-
-		void setUp() {
-			stanzaChannel_ = new DummyStanzaChannel();
-			oracle_ = new PresenceOracle(stanzaChannel_);
-		}
-
-		void tearDown() {
-			delete oracle_;
-			delete stanzaChannel_;
-		}
-
-		void testFirstPresence() {
-			PresencePointerPair out;
-			oracle_->onPresenceChange.connect(boost::bind(&PresenceOracleTest::handlePresenceChange, this, _1, _2, &out));
-
-			SubscriptionRequestInfo info;
-			oracle_->onPresenceSubscriptionRequest.connect(boost::bind(&PresenceOracleTest::handlePresenceSubscriptionRequest, this, _1, _2, &info));
-
-			boost::shared_ptr<Presence> sentPresence(new Presence("blarb"));
-			stanzaChannel_->onPresenceReceived(sentPresence);
-
-			CPPUNIT_ASSERT(!info.jid);
-			CPPUNIT_ASSERT(!info.reason);
-			CPPUNIT_ASSERT(out.two.get() == NULL);
-			CPPUNIT_ASSERT_EQUAL(sentPresence, out.one);
-		}
-		
-		void testSecondPresence() {
-			PresencePointerPair out;
-			oracle_->onPresenceChange.connect(boost::bind(&PresenceOracleTest::handlePresenceChange, this, _1, _2, &out));
-
-			boost::shared_ptr<Presence> sentPresence1(new Presence("blarb"));
-			stanzaChannel_->onPresenceReceived(sentPresence1);
-			CPPUNIT_ASSERT_EQUAL(sentPresence1, out.one);
-			out.one = boost::shared_ptr<Presence>();
-			
-			SubscriptionRequestInfo info;
-			oracle_->onPresenceSubscriptionRequest.connect(boost::bind(&PresenceOracleTest::handlePresenceSubscriptionRequest, this, _1, _2, &info));
-
-			boost::shared_ptr<Presence> sentPresence2(new Presence("test2"));
-			stanzaChannel_->onPresenceReceived(sentPresence2);
-
-			CPPUNIT_ASSERT(!info.jid);
-			CPPUNIT_ASSERT(!info.reason);
-			CPPUNIT_ASSERT_EQUAL(sentPresence1, out.two);
-			CPPUNIT_ASSERT_EQUAL(sentPresence2, out.one);
-		}
-
-		void testSubscriptionRequest() {
-			PresencePointerPair out;
-			oracle_->onPresenceChange.connect(boost::bind(&PresenceOracleTest::handlePresenceChange, this, _1, _2, &out));
-			SubscriptionRequestInfo info;
-			oracle_->onPresenceSubscriptionRequest.connect(boost::bind(&PresenceOracleTest::handlePresenceSubscriptionRequest, this, _1, _2, &info));
-
-			String reasonText = "Because I want to";
-			JID sentJID = JID("me@example.com");
-
-			boost::shared_ptr<Presence> sentPresence(new Presence());
-			sentPresence->setType(Presence::Subscribe);
-			sentPresence->setFrom(sentJID);
-			sentPresence->setStatus(reasonText);
-			stanzaChannel_->onPresenceReceived(sentPresence);
-
-			CPPUNIT_ASSERT(info.jid);
-			CPPUNIT_ASSERT(info.reason);
-			CPPUNIT_ASSERT_EQUAL(sentJID, info.jid.get());
-			CPPUNIT_ASSERT_EQUAL(reasonText, info.reason.get());
-
-			CPPUNIT_ASSERT(!out.two);
-			CPPUNIT_ASSERT(!out.one);
-		}
-};
-CPPUNIT_TEST_SUITE_REGISTRATION(PresenceOracleTest);
-
diff --git a/Swiften/Presence/UnitTest/PresenceSenderTest.cpp b/Swiften/Presence/UnitTest/PresenceSenderTest.cpp
deleted file mode 100644
index 1df0269..0000000
--- a/Swiften/Presence/UnitTest/PresenceSenderTest.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Client/DummyStanzaChannel.h"
-#include "Swiften/Presence/PresenceSender.h"
-
-using namespace Swift;
-
-class PresenceSenderTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(PresenceSenderTest);
-		CPPUNIT_TEST(testSendPresence);
-		CPPUNIT_TEST(testSendPresence_UndirectedPresenceWithDirectedPresenceReceivers);
-		CPPUNIT_TEST(testSendPresence_DirectedPresenceWithDirectedPresenceReceivers);
-		CPPUNIT_TEST(testAddDirectedPresenceReceiver);
-		CPPUNIT_TEST(testAddDirectedPresenceReceiver_AfterSendingDirectedPresence);
-		CPPUNIT_TEST(testRemoveDirectedPresenceReceiver);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void setUp() {
-			channel = new DummyStanzaChannel();
-			testPresence = boost::shared_ptr<Presence>(new Presence());
-			testPresence->setStatus("Foo");
-			secondTestPresence = boost::shared_ptr<Presence>(new Presence());
-			secondTestPresence->setStatus("Bar");
-		}
-
-		void tearDown() {
-			delete channel;
-		}
-
-		void testSendPresence() {
-			std::auto_ptr<PresenceSender> testling(createPresenceSender());
-			testling->sendPresence(testPresence);
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel->sentStanzas.size()));
-			boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0]);
-			CPPUNIT_ASSERT(testPresence == presence);
-		}
-
-		void testSendPresence_UndirectedPresenceWithDirectedPresenceReceivers() {
-			std::auto_ptr<PresenceSender> testling(createPresenceSender());
-			testling->addDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty"));
-
-			testling->sendPresence(testPresence);
-
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(channel->sentStanzas.size()));
-			boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0]);
-			CPPUNIT_ASSERT(testPresence == presence);
-			presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[1]);
-			CPPUNIT_ASSERT_EQUAL(testPresence->getStatus(), presence->getStatus());
-			CPPUNIT_ASSERT_EQUAL(JID("alice@wonderland.lit/teaparty"), presence->getTo());
-		}
-
-		void testSendPresence_DirectedPresenceWithDirectedPresenceReceivers() {
-			std::auto_ptr<PresenceSender> testling(createPresenceSender());
-			testling->addDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty"));
-			channel->sentStanzas.clear();
-
-			testPresence->setTo(JID("foo@bar.com"));
-			testling->sendPresence(testPresence);
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel->sentStanzas.size()));
-			boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0]);
-			CPPUNIT_ASSERT(testPresence == presence);
-		}
-
-		void testAddDirectedPresenceReceiver() {
-			std::auto_ptr<PresenceSender> testling(createPresenceSender());
-			testling->sendPresence(testPresence);
-			channel->sentStanzas.clear();
-
-			testling->addDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty"));
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel->sentStanzas.size()));
-			boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0]);
-			CPPUNIT_ASSERT_EQUAL(testPresence->getStatus(), presence->getStatus());
-			CPPUNIT_ASSERT_EQUAL(JID("alice@wonderland.lit/teaparty"), presence->getTo());
-		}
-
-		void testAddDirectedPresenceReceiver_AfterSendingDirectedPresence() {
-			std::auto_ptr<PresenceSender> testling(createPresenceSender());
-			testling->sendPresence(testPresence);
-			secondTestPresence->setTo(JID("foo@bar.com"));
-			testling->sendPresence(secondTestPresence);
-			channel->sentStanzas.clear();
-
-			testling->addDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty"));
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel->sentStanzas.size()));
-			boost::shared_ptr<Presence> presence = boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0]);
-			CPPUNIT_ASSERT_EQUAL(testPresence->getStatus(), presence->getStatus());
-			CPPUNIT_ASSERT_EQUAL(JID("alice@wonderland.lit/teaparty"), presence->getTo());
-		}
-
-		void testRemoveDirectedPresenceReceiver() {
-			std::auto_ptr<PresenceSender> testling(createPresenceSender());
-			testling->addDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty"));
-			channel->sentStanzas.clear();
-
-			testling->removeDirectedPresenceReceiver(JID("alice@wonderland.lit/teaparty"));
-			testling->sendPresence(testPresence);
-
-			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(channel->sentStanzas.size()));
-			CPPUNIT_ASSERT_EQUAL(boost::dynamic_pointer_cast<Presence>(channel->sentStanzas[0])->getType(), Presence::Unavailable);
-			CPPUNIT_ASSERT(channel->sentStanzas[1] == testPresence);
-		}
-
-	private:
-		PresenceSender* createPresenceSender() {
-			return new PresenceSender(channel);
-		}
-	
-	private:
-		DummyStanzaChannel* channel;
-		boost::shared_ptr<Presence> testPresence;
-		boost::shared_ptr<Presence> secondTestPresence;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(PresenceSenderTest);
diff --git a/Swiften/QA/ClientTest/.gitignore b/Swiften/QA/ClientTest/.gitignore
deleted file mode 100644
index 9fb3e67..0000000
--- a/Swiften/QA/ClientTest/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-ClientTest
diff --git a/Swiften/QA/ClientTest/ClientTest.cpp b/Swiften/QA/ClientTest/ClientTest.cpp
deleted file mode 100644
index 74ec908..0000000
--- a/Swiften/QA/ClientTest/ClientTest.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#include <boost/bind.hpp>
-#include <boost/thread.hpp>
-
-#include "Swiften/Client/Client.h"
-#include "Swiften/Network/BoostTimer.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-#include "Swiften/EventLoop/SimpleEventLoop.h"
-#include "Swiften/Queries/Requests/GetRosterRequest.h"
-#include "Swiften/Client/ClientXMLTracer.h"
-#include "Swiften/Network/BoostIOServiceThread.h"
-#include "Swiften/Network/MainBoostIOServiceThread.h"
-
-using namespace Swift;
-
-SimpleEventLoop eventLoop;
-
-Client* client = 0;
-bool reconnected = false;
-bool rosterReceived = false;
-
-void handleRosterReceived(boost::shared_ptr<Payload>) {
-	if (reconnected) {
-		rosterReceived = true;
-		client->disconnect();
-		eventLoop.stop();
-	}
-	else {
-		reconnected = true;
-		client->disconnect();
-		client->connect();
-	}
-}
-
-void handleConnected() {
-	boost::shared_ptr<GetRosterRequest> rosterRequest(new GetRosterRequest(client));
-	rosterRequest->onResponse.connect(boost::bind(&handleRosterReceived, _1));
-	rosterRequest->send();
-}
-
-int main(int, char**) {
-	char* jid = getenv("SWIFT_CLIENTTEST_JID");
-	if (!jid) {
-		std::cerr << "Please set the SWIFT_CLIENTTEST_JID environment variable" << std::endl;
-		return -1;
-	}
-	char* pass = getenv("SWIFT_CLIENTTEST_PASS");
-	if (!pass) {
-		std::cerr << "Please set the SWIFT_CLIENTTEST_PASS environment variable" << std::endl;
-		return -1;
-	}
-
-	client = new Swift::Client(JID(jid), String(pass));
-	ClientXMLTracer* tracer = new ClientXMLTracer(client);
-	client->onConnected.connect(&handleConnected);
-	client->connect();
-
-	{
-		boost::shared_ptr<BoostTimer> timer(new BoostTimer(30000, &MainBoostIOServiceThread::getInstance().getIOService()));
-		timer->onTick.connect(boost::bind(&SimpleEventLoop::stop, &eventLoop));
-		timer->start();
-
-		eventLoop.run();
-	}
-
-	delete tracer;
-	delete client;
-	return !rosterReceived;
-}
diff --git a/Swiften/QA/ClientTest/SConscript b/Swiften/QA/ClientTest/SConscript
deleted file mode 100644
index bc9cf95..0000000
--- a/Swiften/QA/ClientTest/SConscript
+++ /dev/null
@@ -1,22 +0,0 @@
-import os
-
-Import("env")
-
-if env["TEST"] :
-	myenv = env.Clone()
-	myenv.MergeFlags(myenv["SWIFTEN_FLAGS"])
-	myenv.MergeFlags(myenv["CPPUNIT_FLAGS"])
-	myenv.MergeFlags(myenv["LIBIDN_FLAGS"])
-	myenv.MergeFlags(myenv["BOOST_FLAGS"])
-	myenv.MergeFlags(myenv.get("SQLITE_FLAGS", ""))
-	myenv.MergeFlags(myenv["ZLIB_FLAGS"])
-	myenv.MergeFlags(myenv["OPENSSL_FLAGS"])
-	myenv.MergeFlags(myenv.get("LIBXML_FLAGS", ""))
-	myenv.MergeFlags(myenv.get("EXPAT_FLAGS", ""))
-
-	for i in ["SWIFT_CLIENTTEST_JID", "SWIFT_CLIENTTEST_PASS"]:
-		if os.environ.get(i, "") :
-			myenv["ENV"][i] = os.environ[i]
-
-	tester = myenv.Program("ClientTest", ["ClientTest.cpp"])
-	myenv.Test(tester, "system")
diff --git a/Swiften/QA/NetworkTest/.gitignore b/Swiften/QA/NetworkTest/.gitignore
deleted file mode 100644
index 5a3caca..0000000
--- a/Swiften/QA/NetworkTest/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-NetworkTest
diff --git a/Swiften/QA/NetworkTest/BoostConnectionServerTest.cpp b/Swiften/QA/NetworkTest/BoostConnectionServerTest.cpp
deleted file mode 100644
index 926c9ae..0000000
--- a/Swiften/QA/NetworkTest/BoostConnectionServerTest.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Network/BoostConnectionServer.h"
-#include "Swiften/Network/BoostIOServiceThread.h"
-#include "Swiften/EventLoop/DummyEventLoop.h"
-
-using namespace Swift;
-
-class BoostConnectionServerTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(BoostConnectionServerTest);
-		CPPUNIT_TEST(testConstructor_TwoServersOnSamePort);
-		CPPUNIT_TEST(testStart_Conflict);
-		CPPUNIT_TEST(testStop);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void setUp() {
-			boostIOServiceThread_ = new BoostIOServiceThread();
-			eventLoop_ = new DummyEventLoop();
-			stopped = false;
-			stoppedError.reset();
-		}
-
-		void tearDown() {
-			while (eventLoop_->hasEvents()) {
-				eventLoop_->processEvents();
-			}
-			delete eventLoop_;
-			delete boostIOServiceThread_;
-		}
-
-		void testConstructor_TwoServersOnSamePort() {
-			boost::shared_ptr<BoostConnectionServer> testling(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService()));
-			boost::shared_ptr<BoostConnectionServer> testling2(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService()));
-		}
-
-		void testStart_Conflict() {
-			boost::shared_ptr<BoostConnectionServer> testling(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService()));
-			testling->start();
-
-			boost::shared_ptr<BoostConnectionServer> testling2(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService()));
-			testling2->onStopped.connect(
-					boost::bind(&BoostConnectionServerTest::handleStopped, this, _1));
-
-			testling->stop();
-		}
-
-		void testStop() {
-			boost::shared_ptr<BoostConnectionServer> testling(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService()));
-			testling->start();
-
-			testling->stop();
-
-			boost::shared_ptr<BoostConnectionServer> testling2(new BoostConnectionServer(9999, &boostIOServiceThread_->getIOService()));
-			testling2->start();
-
-			testling2->stop();
-		}
-
-		void handleStopped(boost::optional<BoostConnectionServer::Error> e) {
-			stopped = true;
-			stoppedError = e;
-		}
-
-	private:
-		BoostIOServiceThread* boostIOServiceThread_;
-		DummyEventLoop* eventLoop_;
-		bool stopped;
-		boost::optional<BoostConnectionServer::Error> stoppedError;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(BoostConnectionServerTest);
diff --git a/Swiften/QA/NetworkTest/BoostConnectionTest.cpp b/Swiften/QA/NetworkTest/BoostConnectionTest.cpp
deleted file mode 100644
index af4e003..0000000
--- a/Swiften/QA/NetworkTest/BoostConnectionTest.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/sleep.h"
-#include "Swiften/Network/BoostConnection.h"
-#include "Swiften/Network/HostAddress.h"
-#include "Swiften/Network/HostAddressPort.h"
-#include "Swiften/Network/BoostIOServiceThread.h"
-#include "Swiften/EventLoop/DummyEventLoop.h"
-
-const unsigned char* address = reinterpret_cast<const unsigned char*>("\x41\x63\xde\x89");
-
-using namespace Swift;
-
-class BoostConnectionTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(BoostConnectionTest);
-		CPPUNIT_TEST(testDestructor);
-		CPPUNIT_TEST(testDestructor_PendingEvents);
-		CPPUNIT_TEST(testWrite);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		BoostConnectionTest() {}
-
-		void setUp() {
-			boostIOServiceThread_ = new BoostIOServiceThread();
-			eventLoop_ = new DummyEventLoop();
-			disconnected = false;
-		}
-
-		void tearDown() {
-			delete eventLoop_;
-			delete boostIOServiceThread_;
-		}
-
-		void testDestructor() {
-			{
-				boost::shared_ptr<BoostConnection> testling(new BoostConnection(&boostIOServiceThread_->getIOService()));
-				testling->connect(HostAddressPort(HostAddress(address, 4), 5222));
-			}
-		}
-
-		void testDestructor_PendingEvents() {
-			{
-				boost::shared_ptr<BoostConnection> testling(new BoostConnection(&boostIOServiceThread_->getIOService()));
-				testling->connect(HostAddressPort(HostAddress(address, 4), 5222));
-				while (!eventLoop_->hasEvents()) {
-					Swift::sleep(10);
-				}
-			}
-			eventLoop_->processEvents();
-		}
-
-		void testWrite() {
-			boost::shared_ptr<BoostConnection> testling(new BoostConnection(&boostIOServiceThread_->getIOService()));
-			testling->onConnectFinished.connect(boost::bind(&BoostConnectionTest::doWrite, this, testling.get()));
-			testling->onDataRead.connect(boost::bind(&BoostConnectionTest::handleDataRead, this, _1));
-			testling->onDisconnected.connect(boost::bind(&BoostConnectionTest::handleDisconnected, this));
-			testling->connect(HostAddressPort(HostAddress("65.99.222.137"), 5222));
-			while (receivedData.isEmpty()) {
-				Swift::sleep(10);
-				eventLoop_->processEvents();
-			}
-			testling->disconnect();
-		}
-
-		void doWrite(BoostConnection* connection) {
-			connection->write(ByteArray("<stream:stream>"));
-		}
-
-		void handleDataRead(const ByteArray& data) {
-			receivedData += data;
-		}
-
-		void handleDisconnected() {
-			disconnected = true;
-		}
-
-	private:
-		BoostIOServiceThread* boostIOServiceThread_;
-		DummyEventLoop* eventLoop_;
-		ByteArray receivedData;
-		bool disconnected;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(BoostConnectionTest);
diff --git a/Swiften/QA/NetworkTest/DomainNameResolverTest.cpp b/Swiften/QA/NetworkTest/DomainNameResolverTest.cpp
deleted file mode 100644
index 09837d6..0000000
--- a/Swiften/QA/NetworkTest/DomainNameResolverTest.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/bind.hpp>
-
-#include "Swiften/Base/sleep.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Network/PlatformDomainNameResolver.h"
-#include "Swiften/Network/DomainNameAddressQuery.h"
-#include "Swiften/Network/DomainNameServiceQuery.h"
-#include "Swiften/EventLoop/DummyEventLoop.h"
-
-using namespace Swift;
-
-class DomainNameResolverTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(DomainNameResolverTest);
-		CPPUNIT_TEST(testResolveAddress);
-		CPPUNIT_TEST(testResolveAddress_Error);
-		//CPPUNIT_TEST(testResolveAddress_IPv6);
-		CPPUNIT_TEST(testResolveAddress_International);
-		CPPUNIT_TEST(testResolveAddress_Localhost);
-		CPPUNIT_TEST(testResolveService);
-		CPPUNIT_TEST(testResolveService_Error);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		DomainNameResolverTest() {}
-
-		void setUp() {
-			eventLoop = new DummyEventLoop();
-			resolver = new PlatformDomainNameResolver();
-			resultsAvailable = false;
-		}
-
-		void tearDown() {
-			delete resolver;
-			delete eventLoop;
-		}
-
-		void testResolveAddress() {
-			boost::shared_ptr<DomainNameAddressQuery> query(createAddressQuery("xmpp.test.swift.im"));
-
-			query->run();
-			waitForResults();
-
-			CPPUNIT_ASSERT(!addressQueryError);
-			CPPUNIT_ASSERT_EQUAL(std::string("10.0.0.0"), addressQueryResult.toString());
-		}
-
-		void testResolveAddress_Error() {
-			boost::shared_ptr<DomainNameAddressQuery> query(createAddressQuery("invalid.test.swift.im"));
-
-			query->run();
-			waitForResults();
-
-			CPPUNIT_ASSERT(addressQueryError);
-		}
-
-		void testResolveAddress_IPv6() {
-			boost::shared_ptr<DomainNameAddressQuery> query(createAddressQuery("xmpp-ipv6.test.swift.im"));
-
-			query->run();
-			waitForResults();
-
-			CPPUNIT_ASSERT(!addressQueryError);
-			CPPUNIT_ASSERT_EQUAL(std::string("0000:0000:0000:0000:0000:ffff:0a00:0104"), addressQueryResult.toString());
-		}
-
-		void testResolveAddress_International() {
-			boost::shared_ptr<DomainNameAddressQuery> query(createAddressQuery("tron\xc3\xa7on.test.swift.im"));
-
-			query->run();
-			waitForResults();
-
-			CPPUNIT_ASSERT(!addressQueryError);
-			CPPUNIT_ASSERT_EQUAL(std::string("10.0.0.3"), addressQueryResult.toString());
-		}
-
-		void testResolveAddress_Localhost() {
-			boost::shared_ptr<DomainNameAddressQuery> query(createAddressQuery("localhost"));
-
-			query->run();
-			waitForResults();
-
-			CPPUNIT_ASSERT(!addressQueryError);
-			CPPUNIT_ASSERT_EQUAL(std::string("127.0.0.1"), addressQueryResult.toString());
-		}
-
-
-		void testResolveService() {
-			boost::shared_ptr<DomainNameServiceQuery> query(createServiceQuery("_xmpp-client._tcp.xmpp-srv.test.swift.im"));
-
-			query->run();
-			waitForResults();
-
-			CPPUNIT_ASSERT_EQUAL(4, static_cast<int>(serviceQueryResult.size()));
-			CPPUNIT_ASSERT_EQUAL(String("xmpp1.test.swift.im"), serviceQueryResult[0].hostname);
-			CPPUNIT_ASSERT_EQUAL(5000, serviceQueryResult[0].port);
-			CPPUNIT_ASSERT_EQUAL(0, serviceQueryResult[0].priority);
-			CPPUNIT_ASSERT_EQUAL(1, serviceQueryResult[0].weight);
-			CPPUNIT_ASSERT_EQUAL(String("xmpp-invalid.test.swift.im"), serviceQueryResult[1].hostname);
-			CPPUNIT_ASSERT_EQUAL(5000, serviceQueryResult[1].port);
-			CPPUNIT_ASSERT_EQUAL(1, serviceQueryResult[1].priority);
-			CPPUNIT_ASSERT_EQUAL(100, serviceQueryResult[1].weight);
-			CPPUNIT_ASSERT_EQUAL(String("xmpp3.test.swift.im"), serviceQueryResult[2].hostname);
-			CPPUNIT_ASSERT_EQUAL(5000, serviceQueryResult[2].port);
-			CPPUNIT_ASSERT_EQUAL(3, serviceQueryResult[2].priority);
-			CPPUNIT_ASSERT_EQUAL(100, serviceQueryResult[2].weight);
-			CPPUNIT_ASSERT_EQUAL(String("xmpp2.test.swift.im"), serviceQueryResult[3].hostname);
-			CPPUNIT_ASSERT_EQUAL(5000, serviceQueryResult[3].port);
-			CPPUNIT_ASSERT_EQUAL(5, serviceQueryResult[3].priority);
-			CPPUNIT_ASSERT_EQUAL(100, serviceQueryResult[3].weight);
-		}
-
-		void testResolveService_Error() {
-		}
-
-/*
-		}
-		*/
-
-	private:
-			boost::shared_ptr<DomainNameAddressQuery> createAddressQuery(const String& domain) {
-				boost::shared_ptr<DomainNameAddressQuery> result = resolver->createAddressQuery(domain);
-				result->onResult.connect(boost::bind(&DomainNameResolverTest::handleAddressQueryResult, this, _1, _2));
-				return result;
-			}
-
-			void handleAddressQueryResult(const HostAddress& address, boost::optional<DomainNameResolveError> error) {
-				addressQueryResult = address;
-				addressQueryError = error;
-				resultsAvailable = true;
-			}
-
-			boost::shared_ptr<DomainNameServiceQuery> createServiceQuery(const String& domain) {
-				boost::shared_ptr<DomainNameServiceQuery> result = resolver->createServiceQuery(domain);
-				result->onResult.connect(boost::bind(&DomainNameResolverTest::handleServiceQueryResult, this, _1));
-				return result;
-			}
-
-			void handleServiceQueryResult(const std::vector<DomainNameServiceQuery::Result>& result) {
-				serviceQueryResult = result;
-				resultsAvailable = true;
-			}
-
-			void waitForResults() {
-				eventLoop->processEvents();
-				int ticks = 0;
-				while (!resultsAvailable) {
-					ticks++;
-					if (ticks > 1000) {
-						CPPUNIT_ASSERT(false);
-					}
-					Swift::sleep(10);
-					eventLoop->processEvents();
-				}
-			}
-
-	private:
-		DummyEventLoop* eventLoop;
-		bool resultsAvailable;
-		HostAddress addressQueryResult;
-		boost::optional<DomainNameResolveError> addressQueryError;
-		std::vector<DomainNameServiceQuery::Result> serviceQueryResult;
-		PlatformDomainNameResolver* resolver;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(DomainNameResolverTest);
diff --git a/Swiften/QA/NetworkTest/SConscript b/Swiften/QA/NetworkTest/SConscript
deleted file mode 100644
index 871df39..0000000
--- a/Swiften/QA/NetworkTest/SConscript
+++ /dev/null
@@ -1,18 +0,0 @@
-import os
-
-Import("env")
-
-if env["TEST"] :
-	myenv = env.Clone()
-	myenv.MergeFlags(myenv["CHECKER_FLAGS"])
-	myenv.MergeFlags(myenv["SWIFTEN_FLAGS"])
-	myenv.MergeFlags(myenv["CPPUNIT_FLAGS"])
-	myenv.MergeFlags(myenv["BOOST_FLAGS"])
-	myenv.MergeFlags(myenv["LIBIDN_FLAGS"])
-
-	tester = myenv.Program("NetworkTest", [
-			"BoostConnectionServerTest.cpp",
-			"BoostConnectionTest.cpp",
-			"DomainNameResolverTest.cpp",
-		])
-	myenv.Test(tester, "system")
diff --git a/Swiften/QA/SConscript b/Swiften/QA/SConscript
deleted file mode 100644
index ede7b39..0000000
--- a/Swiften/QA/SConscript
+++ /dev/null
@@ -1,4 +0,0 @@
-SConscript([
-		"NetworkTest/SConscript",
-		"ClientTest/SConscript",
-	])
diff --git a/Swiften/Queries/DummyIQChannel.h b/Swiften/Queries/DummyIQChannel.h
deleted file mode 100644
index c0a4a25..0000000
--- a/Swiften/Queries/DummyIQChannel.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef SWIFTEN_DummyIQChannel_H
-#define SWIFTEN_DummyIQChannel_H
-
-#include <vector>
-
-#include "Swiften/Queries/IQChannel.h"
-
-namespace Swift {
-	class DummyIQChannel : public IQChannel {
-		public:
-			DummyIQChannel() {}
-
-			virtual void sendIQ(boost::shared_ptr<IQ> iq) {
-				iqs_.push_back(iq);
-			}
-
-			virtual String getNewIQID() {
-				return "test-id";
-			}
-
-			virtual bool isAvailable() {
-				return true;
-			}
-
-			std::vector<boost::shared_ptr<IQ> > iqs_;
-	};
-}
-
-#endif
diff --git a/Swiften/Queries/GenericRequest.h b/Swiften/Queries/GenericRequest.h
deleted file mode 100644
index 77dae52..0000000
--- a/Swiften/Queries/GenericRequest.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-
-#include "Swiften/Queries/Request.h"
-
-namespace Swift {
-	template<typename PAYLOAD_TYPE>
-	class GenericRequest : public Request {
-		public:
-			GenericRequest(
-					IQ::Type type, 
-					const JID& receiver, 
-					boost::shared_ptr<Payload> payload, 
-					IQRouter* router) :
-						Request(type, receiver, payload, router) {
-			}
-
-			virtual void handleResponse(boost::shared_ptr<Payload> payload, boost::optional<ErrorPayload> error) {
-				onResponse(boost::dynamic_pointer_cast<PAYLOAD_TYPE>(payload), error);
-			}
-
-		public:
-			boost::signal<void (boost::shared_ptr<PAYLOAD_TYPE>, const boost::optional<ErrorPayload>&)> onResponse;
-	};
-}
diff --git a/Swiften/Queries/GetResponder.h b/Swiften/Queries/GetResponder.h
deleted file mode 100644
index 2bd2fe2..0000000
--- a/Swiften/Queries/GetResponder.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include "Swiften/Queries/Responder.h"
-
-namespace Swift {
-	template<typename T>
-	class GetResponder : public Responder<T> {
-		public:
-			GetResponder(IQRouter* router) : Responder<T>(router) {}
-
-		private:
-			virtual bool handleSetRequest(const JID&, const String&, boost::shared_ptr<T>) { return false; }
-	};
-}
diff --git a/Swiften/Queries/IQChannel.cpp b/Swiften/Queries/IQChannel.cpp
deleted file mode 100644
index 539dea0..0000000
--- a/Swiften/Queries/IQChannel.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Queries/IQChannel.h"
-
-namespace Swift {
-
-IQChannel::~IQChannel() {
-}
-
-}
diff --git a/Swiften/Queries/IQChannel.h b/Swiften/Queries/IQChannel.h
deleted file mode 100644
index 1692afe..0000000
--- a/Swiften/Queries/IQChannel.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef SWIFTEN_IQChannel_H
-#define SWIFTEN_IQChannel_H
-
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/IQ.h"
-
-namespace Swift {
-	class IQChannel {
-		public:
-			virtual ~IQChannel();
-
-			virtual void sendIQ(boost::shared_ptr<IQ>) = 0;
-			virtual String getNewIQID() = 0;
-			
-			virtual bool isAvailable() = 0;
-
-			boost::signal<void (boost::shared_ptr<IQ>)> onIQReceived;
-	};
-}
-
-#endif
diff --git a/Swiften/Queries/IQHandler.cpp b/Swiften/Queries/IQHandler.cpp
deleted file mode 100644
index 81bd773..0000000
--- a/Swiften/Queries/IQHandler.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#include "Swiften/Queries/IQHandler.h"
-#include "Swiften/Queries/IQRouter.h"
-
-namespace Swift {
-
-IQHandler::~IQHandler() {
-}
-
-}
diff --git a/Swiften/Queries/IQHandler.h b/Swiften/Queries/IQHandler.h
deleted file mode 100644
index 7389b3a..0000000
--- a/Swiften/Queries/IQHandler.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef SWIFTEN_IQHandler_H
-#define SWIFTEN_IQHandler_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/IQ.h"
-
-namespace Swift {
-	class IQRouter;
-
-	class IQHandler {
-		public:
-			virtual ~IQHandler();
-
-			virtual bool handleIQ(boost::shared_ptr<IQ>) = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Queries/IQRouter.cpp b/Swiften/Queries/IQRouter.cpp
deleted file mode 100644
index fdfa00b..0000000
--- a/Swiften/Queries/IQRouter.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "Swiften/Queries/IQRouter.h"
-
-#include <algorithm>
-#include <boost/bind.hpp>
-
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Queries/IQHandler.h"
-#include "Swiften/Queries/IQChannel.h"
-#include "Swiften/Elements/ErrorPayload.h"
-
-namespace Swift {
-
-static void noop(IQHandler*) {}
-
-IQRouter::IQRouter(IQChannel* channel) : channel_(channel), queueRemoves_(false) {
-	channel->onIQReceived.connect(boost::bind(&IQRouter::handleIQ, this, _1));
-}
-
-IQRouter::~IQRouter() {
-}
-
-bool IQRouter::isAvailable() {
-	return channel_->isAvailable();
-}
-
-void IQRouter::handleIQ(boost::shared_ptr<IQ> iq) {
-	queueRemoves_ = true;
-
-	bool handled = false;
-	foreach(boost::shared_ptr<IQHandler> handler, handlers_) {
-		handled |= handler->handleIQ(iq);
-		if (handled) {
-			break;
-		}
-	}
-	if (!handled && (iq->getType() == IQ::Get || iq->getType() == IQ::Set) ) {
-		channel_->sendIQ(IQ::createError(iq->getFrom(), iq->getID(), ErrorPayload::FeatureNotImplemented, ErrorPayload::Cancel));
-	}
-
-	processPendingRemoves();
-
-	queueRemoves_ = false;
-}
-
-void IQRouter::processPendingRemoves() {
-	foreach(boost::shared_ptr<IQHandler> handler, queuedRemoves_) {
-		handlers_.erase(std::remove(handlers_.begin(), handlers_.end(), handler), handlers_.end());
-	}
-	queuedRemoves_.clear();
-}
-
-void IQRouter::addHandler(IQHandler* handler) {
-	addHandler(boost::shared_ptr<IQHandler>(handler, noop));
-}
-
-void IQRouter::removeHandler(IQHandler* handler) {
-	removeHandler(boost::shared_ptr<IQHandler>(handler, noop));
-}
-
-void IQRouter::addHandler(boost::shared_ptr<IQHandler> handler) {
-	handlers_.push_back(handler);
-}
-
-void IQRouter::removeHandler(boost::shared_ptr<IQHandler> handler) {
-	if (queueRemoves_) {
-		queuedRemoves_.push_back(handler);
-	}
-	else {
-		handlers_.erase(std::remove(handlers_.begin(), handlers_.end(), handler), handlers_.end());
-	}
-}
-
-void IQRouter::sendIQ(boost::shared_ptr<IQ> iq) {
-	channel_->sendIQ(iq);
-}
-
-String IQRouter::getNewIQID() {
-	return channel_->getNewIQID();
-}
-
-}
diff --git a/Swiften/Queries/IQRouter.h b/Swiften/Queries/IQRouter.h
deleted file mode 100644
index 717a845..0000000
--- a/Swiften/Queries/IQRouter.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef SWIFTEN_IQRouter_H
-#define SWIFTEN_IQRouter_H
-
-#include <boost/shared_ptr.hpp>
-#include <vector>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/IQ.h"
-
-namespace Swift {
-	class IQChannel;
-	class IQHandler;
-
-	class IQRouter {
-		public:
-			IQRouter(IQChannel* channel);
-			~IQRouter();
-
-			void addHandler(IQHandler* handler);
-			void removeHandler(IQHandler* handler);
-			void addHandler(boost::shared_ptr<IQHandler> handler);
-			void removeHandler(boost::shared_ptr<IQHandler> handler);
-
-			void sendIQ(boost::shared_ptr<IQ> iq);
-			String getNewIQID();
-			
-			bool isAvailable();
-
-		private:
-			void handleIQ(boost::shared_ptr<IQ> iq);
-			void processPendingRemoves();
-
-		private:
-			IQChannel* channel_;
-			std::vector< boost::shared_ptr<IQHandler> > handlers_;
-			std::vector< boost::shared_ptr<IQHandler> > queuedRemoves_;
-			bool queueRemoves_;
-	};
-}
-
-#endif
diff --git a/Swiften/Queries/Request.cpp b/Swiften/Queries/Request.cpp
deleted file mode 100644
index ce9f763..0000000
--- a/Swiften/Queries/Request.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "Swiften/Queries/Request.h"
-#include "Swiften/Queries/IQRouter.h"
-#include "Swiften/EventLoop/MainEventLoop.h"
-
-namespace Swift {
-
-Request::Request(IQ::Type type, const JID& receiver, boost::shared_ptr<Payload> payload, IQRouter* router) : router_(router), type_(type), receiver_(receiver), payload_(payload), sent_(false) {
-}
-
-Request::Request(IQ::Type type, const JID& receiver, IQRouter* router) : router_(router), type_(type), receiver_(receiver), sent_(false) {
-}
-
-void Request::send() {
-	assert(payload_);
-	assert(!sent_);
-	sent_ = true;
-
-	boost::shared_ptr<IQ> iq(new IQ(type_));
-	iq->setTo(receiver_);
-	iq->addPayload(payload_);
-	id_ = router_->getNewIQID();
-	iq->setID(id_);
-
-	try {
-		router_->addHandler(shared_from_this());
-	}
-	catch (const std::exception&) {
-		router_->addHandler(this);
-	}
-
-	router_->sendIQ(iq);
-}
-
-bool Request::handleIQ(boost::shared_ptr<IQ> iq) {
-	bool handled = false;
-	if (sent_ && iq->getID() == id_) {
-		if (iq->getType() == IQ::Result) {
-			handleResponse(iq->getPayloadOfSameType(payload_), boost::optional<ErrorPayload>());
-		}
-		else {
-			boost::shared_ptr<ErrorPayload> errorPayload = iq->getPayload<ErrorPayload>();
-			if (errorPayload) {
-				handleResponse(boost::shared_ptr<Payload>(), boost::optional<ErrorPayload>(*errorPayload));
-			}
-			else {
-				handleResponse(boost::shared_ptr<Payload>(), boost::optional<ErrorPayload>(ErrorPayload::UndefinedCondition));
-			}
-		}
-		router_->removeHandler(this);
-		handled = true;
-	}
-	return handled;
-}
-
-}
diff --git a/Swiften/Queries/Request.h b/Swiften/Queries/Request.h
deleted file mode 100644
index cc4a58e..0000000
--- a/Swiften/Queries/Request.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef SWIFTEN_Request_H
-#define SWIFTEN_Request_H
-
-#include <boost/shared_ptr.hpp>
-#include <boost/optional.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Queries/IQHandler.h"
-#include "Swiften/Elements/IQ.h"
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/Elements/ErrorPayload.h"
-#include "Swiften/JID/JID.h"
-
-namespace Swift {
-	class Request : public IQHandler, public boost::enable_shared_from_this<Request> {
-		public:
-			Request(
-					IQ::Type type, 
-					const JID& receiver, 
-					boost::shared_ptr<Payload> payload, 
-					IQRouter* router);
-			Request(
-					IQ::Type type, 
-					const JID& receiver, 
-					IQRouter* router);
-
-			void send();
-
-		protected:
-			virtual void setPayload(boost::shared_ptr<Payload> p) {
-				payload_ = p;
-			}
-
-			virtual void handleResponse(boost::shared_ptr<Payload>, boost::optional<ErrorPayload>) = 0;
-
-		private:
-			bool handleIQ(boost::shared_ptr<IQ>);
-
-		private:
-			IQRouter* router_;
-			IQ::Type type_;
-			JID receiver_;
-			boost::shared_ptr<Payload> payload_;
-			String id_;
-			bool sent_;
-	};
-}
-
-#endif
diff --git a/Swiften/Queries/Requests/GetDiscoInfoRequest.h b/Swiften/Queries/Requests/GetDiscoInfoRequest.h
deleted file mode 100644
index 70f09ca..0000000
--- a/Swiften/Queries/Requests/GetDiscoInfoRequest.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include "Swiften/Queries/GenericRequest.h"
-#include "Swiften/Elements/DiscoInfo.h"
-
-namespace Swift {
-	class GetDiscoInfoRequest : public GenericRequest<DiscoInfo> {
-		public:
-			GetDiscoInfoRequest(const JID& jid, IQRouter* router) :
-					GenericRequest<DiscoInfo>(IQ::Get, jid, boost::shared_ptr<DiscoInfo>(new DiscoInfo()), router) {
-			}
-	};
-}
diff --git a/Swiften/Queries/Requests/GetPrivateStorageRequest.h b/Swiften/Queries/Requests/GetPrivateStorageRequest.h
deleted file mode 100644
index 5d6440e..0000000
--- a/Swiften/Queries/Requests/GetPrivateStorageRequest.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#pragma once
-
-#include <boost/signals.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Queries/Request.h"
-#include "Swiften/Elements/PrivateStorage.h"
-#include "Swiften/Elements/ErrorPayload.h"
-
-namespace Swift {
-	template<typename PAYLOAD_TYPE>
-	class GetPrivateStorageRequest : public Request {
-		public:
-			GetPrivateStorageRequest(IQRouter* router) : Request(IQ::Get, JID(), boost::shared_ptr<PrivateStorage>(new PrivateStorage(boost::shared_ptr<Payload>(new PAYLOAD_TYPE()))), router) {
-			}
-
-			virtual void handleResponse(boost::shared_ptr<Payload> payload, boost::optional<ErrorPayload> error) {
-				boost::shared_ptr<PrivateStorage> storage = boost::dynamic_pointer_cast<PrivateStorage>(payload);
-				if (storage) {
-					onResponse(boost::dynamic_pointer_cast<PAYLOAD_TYPE>(storage->getPayload()), error);
-				}
-				else {
-					onResponse(boost::shared_ptr<PAYLOAD_TYPE>(), error);
-				}
-			}
-
-		public:
-			boost::signal<void (boost::shared_ptr<PAYLOAD_TYPE>, const boost::optional<ErrorPayload>&)> onResponse;
-	};
-}
diff --git a/Swiften/Queries/Requests/GetRosterRequest.h b/Swiften/Queries/Requests/GetRosterRequest.h
deleted file mode 100644
index cac1c12..0000000
--- a/Swiften/Queries/Requests/GetRosterRequest.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include "Swiften/Queries/GenericRequest.h"
-#include "Swiften/Elements/RosterPayload.h"
-
-namespace Swift {
-	class GetRosterRequest : public GenericRequest<RosterPayload> {
-		public:
-			GetRosterRequest(IQRouter* router) :
-					GenericRequest<RosterPayload>(IQ::Get, JID(), boost::shared_ptr<Payload>(new RosterPayload()), router) {
-			}
-	};
-}
diff --git a/Swiften/Queries/Requests/GetSecurityLabelsCatalogRequest.h b/Swiften/Queries/Requests/GetSecurityLabelsCatalogRequest.h
deleted file mode 100644
index 87b51ce..0000000
--- a/Swiften/Queries/Requests/GetSecurityLabelsCatalogRequest.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-#include "Swiften/Queries/GenericRequest.h"
-#include "Swiften/Elements/SecurityLabelsCatalog.h"
-
-namespace Swift {
-	class GetSecurityLabelsCatalogRequest : public GenericRequest<SecurityLabelsCatalog> {
-		public:
-			GetSecurityLabelsCatalogRequest(
-					const JID& recipient, 
-					IQRouter* router) :
-						GenericRequest<SecurityLabelsCatalog>(
-							IQ::Get, JID(), boost::shared_ptr<SecurityLabelsCatalog>(new SecurityLabelsCatalog(recipient)), router) {
-			}
-	};
-}
diff --git a/Swiften/Queries/Requests/GetVCardRequest.h b/Swiften/Queries/Requests/GetVCardRequest.h
deleted file mode 100644
index 8fc6e17..0000000
--- a/Swiften/Queries/Requests/GetVCardRequest.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#pragma once
-
-#include "Swiften/Queries/GenericRequest.h"
-#include "Swiften/Elements/VCard.h"
-
-namespace Swift {
-	class GetVCardRequest : public GenericRequest<VCard> {
-		public:
-			GetVCardRequest(const JID& jid, IQRouter* router) : GenericRequest<VCard>(IQ::Get, jid, boost::shared_ptr<Payload>(new VCard()), router) {
-			}
-	};
-}
diff --git a/Swiften/Queries/Requests/SetPrivateStorageRequest.h b/Swiften/Queries/Requests/SetPrivateStorageRequest.h
deleted file mode 100644
index 834ddd8..0000000
--- a/Swiften/Queries/Requests/SetPrivateStorageRequest.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-#include <boost/signals.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Queries/Request.h"
-#include "Swiften/Elements/PrivateStorage.h"
-#include "Swiften/Elements/ErrorPayload.h"
-
-namespace Swift {
-	template<typename PAYLOAD_TYPE>
-	class SetPrivateStorageRequest : public Request {
-		public:
-			SetPrivateStorageRequest(boost::shared_ptr<PAYLOAD_TYPE> payload, IQRouter* router) : Request(IQ::Set, JID(), boost::shared_ptr<PrivateStorage>(new PrivateStorage(payload)), router) {
-			}
-
-			virtual void handleResponse(boost::shared_ptr<Payload> payload, boost::optional<ErrorPayload> error) {
-				onResponse(error);
-			}
-
-		public:
-			boost::signal<void (const boost::optional<ErrorPayload>&)> onResponse;
-	};
-}
diff --git a/Swiften/Queries/Requests/UnitTest/GetPrivateStorageRequestTest.cpp b/Swiften/Queries/Requests/UnitTest/GetPrivateStorageRequestTest.cpp
deleted file mode 100644
index a86a111..0000000
--- a/Swiften/Queries/Requests/UnitTest/GetPrivateStorageRequestTest.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/bind.hpp>
-
-#include "Swiften/Queries/Requests/GetPrivateStorageRequest.h"
-#include "Swiften/Queries/IQRouter.h"
-#include "Swiften/Queries/DummyIQChannel.h"
-#include "Swiften/Elements/Payload.h"
-
-using namespace Swift;
-
-class GetPrivateStorageRequestTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(GetPrivateStorageRequestTest);
-		CPPUNIT_TEST(testSend);
-		CPPUNIT_TEST(testHandleResponse);
-		CPPUNIT_TEST(testHandleResponse_Error);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		class MyPayload : public Payload {
-			public:
-				MyPayload(const String& text = "") : text(text) {}
-				String text;
-		};
-
-	public:
-		GetPrivateStorageRequestTest() {}
-
-		void setUp() {
-			channel = new DummyIQChannel();
-			router = new IQRouter(channel);
-		}
-
-		void tearDown() {
-			delete router;
-			delete channel;
-		}
-
-		void testSend() {
-			GetPrivateStorageRequest<MyPayload> request(router);
-			request.send();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel->iqs_.size()));
-			CPPUNIT_ASSERT_EQUAL(JID(), channel->iqs_[0]->getTo());
-			CPPUNIT_ASSERT_EQUAL(IQ::Get, channel->iqs_[0]->getType());
-			boost::shared_ptr<PrivateStorage> storage = channel->iqs_[0]->getPayload<PrivateStorage>();
-			CPPUNIT_ASSERT(storage);
-			boost::shared_ptr<MyPayload> payload = boost::dynamic_pointer_cast<MyPayload>(storage->getPayload());
-			CPPUNIT_ASSERT(payload);
-		}
-
-		void testHandleResponse() {
-			GetPrivateStorageRequest<MyPayload> testling(router);
-			testling.onResponse.connect(boost::bind(&GetPrivateStorageRequestTest::handleResponse, this, _1, _2));
-			testling.send();
-			channel->onIQReceived(createResponse("test-id", "foo"));
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(responses.size()));
-			CPPUNIT_ASSERT_EQUAL(String("foo"), boost::dynamic_pointer_cast<MyPayload>(responses[0])->text);
-		}
-
-		void testHandleResponse_Error() {
-			GetPrivateStorageRequest<MyPayload> testling(router);
-			testling.onResponse.connect(boost::bind(&GetPrivateStorageRequestTest::handleResponse, this, _1, _2));
-			testling.send();
-			channel->onIQReceived(createError("test-id"));
-
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(responses.size()));
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(errors.size()));
-		}
-
-	private:
-		void handleResponse(boost::shared_ptr<Payload> p, const boost::optional<ErrorPayload>& e) {
-			if (e) {
-				errors.push_back(*e);
-			}
-			else {
-				responses.push_back(p);
-			}
-		}
-
-		boost::shared_ptr<IQ> createResponse(const String& id, const String& text) {
-			boost::shared_ptr<IQ> iq(new IQ(IQ::Result));
-			boost::shared_ptr<PrivateStorage> storage(new PrivateStorage());
-			storage->setPayload(boost::shared_ptr<Payload>(new MyPayload(text)));
-			iq->addPayload(storage);
-			iq->setID(id);
-			return iq;
-		}
-
-		boost::shared_ptr<IQ> createError(const String& id) {
-			boost::shared_ptr<IQ> iq(new IQ(IQ::Error));
-			iq->setID(id);
-			return iq;
-		}
-	
-	private:
-		IQRouter* router;
-		DummyIQChannel* channel;
-		std::vector< ErrorPayload > errors;
-		std::vector< boost::shared_ptr<Payload> > responses;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(GetPrivateStorageRequestTest);
diff --git a/Swiften/Queries/Responder.h b/Swiften/Queries/Responder.h
deleted file mode 100644
index 9c025eb..0000000
--- a/Swiften/Queries/Responder.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef SWIFTEN_Responder_H
-#define SWIFTEN_Responder_H
-
-#include "Swiften/Queries/IQHandler.h"
-#include "Swiften/Queries/IQRouter.h"
-#include "Swiften/Elements/ErrorPayload.h"
-
-namespace Swift {
-	template<typename PAYLOAD_TYPE>
-	class Responder : public IQHandler {
-		public:
-			Responder(IQRouter* router) : router_(router) {
-				router_->addHandler(this);
-			}
-
-			~Responder() {
-				router_->removeHandler(this);
-			}
-
-		protected:
-			virtual bool handleGetRequest(const JID& from, const String& id, boost::shared_ptr<PAYLOAD_TYPE> payload) = 0;
-			virtual bool handleSetRequest(const JID& from, const String& id, boost::shared_ptr<PAYLOAD_TYPE> payload) = 0;
-
-			void sendResponse(const JID& to, const String& id, boost::shared_ptr<Payload> payload) {
-				router_->sendIQ(IQ::createResult(to, id, payload));
-			}
-
-			void sendError(const JID& to, const String& id, ErrorPayload::Condition condition, ErrorPayload::Type type) {
-				router_->sendIQ(IQ::createError(to, id, condition, type));
-			}
-
-		private:
-			virtual bool handleIQ(boost::shared_ptr<IQ> iq) {
-				if (iq->getType() == IQ::Set || iq->getType() == IQ::Get) {
-					boost::shared_ptr<PAYLOAD_TYPE> payload(iq->getPayload<PAYLOAD_TYPE>());
-					if (payload) {
-						bool result;
-						if (iq->getType() == IQ::Set) {
-							result = handleSetRequest(iq->getFrom(), iq->getID(), payload);
-						}
-						else {
-							result = handleGetRequest(iq->getFrom(), iq->getID(), payload);
-						}
-						if (!result) {
-							router_->sendIQ(IQ::createError(iq->getFrom(), iq->getID(), ErrorPayload::NotAllowed, ErrorPayload::Cancel));
-						}
-						return true;
-					}
-				}
-				return false;
-			}
-		
-		private:
-			IQRouter* router_;
-	};
-}
-
-#endif
diff --git a/Swiften/Queries/Responders/DiscoInfoResponder.cpp b/Swiften/Queries/Responders/DiscoInfoResponder.cpp
deleted file mode 100644
index 572f83f..0000000
--- a/Swiften/Queries/Responders/DiscoInfoResponder.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-#include "Swiften/Queries/Responders/DiscoInfoResponder.h"
-#include "Swiften/Queries/IQRouter.h"
-#include "Swiften/Elements/DiscoInfo.h"
-
-namespace Swift {
-
-DiscoInfoResponder::DiscoInfoResponder(IQRouter* router) : GetResponder<DiscoInfo>(router) {
-}
-
-void DiscoInfoResponder::setDiscoInfo(const DiscoInfo& info) {
-	info_ = info;
-}
-
-void DiscoInfoResponder::setDiscoInfo(const String& node, const DiscoInfo& info) {
-	DiscoInfo newInfo(info);
-	newInfo.setNode(node);
-	nodeInfo_[node] = newInfo;
-}
-
-bool DiscoInfoResponder::handleGetRequest(const JID& from, const String& id, boost::shared_ptr<DiscoInfo> info) {
-	if (info->getNode().isEmpty()) {
-		sendResponse(from, id, boost::shared_ptr<DiscoInfo>(new DiscoInfo(info_)));
-	}
-	else {
-		std::map<String,DiscoInfo>::const_iterator i = nodeInfo_.find(info->getNode());
-		if (i != nodeInfo_.end()) {
-			sendResponse(from, id, boost::shared_ptr<DiscoInfo>(new DiscoInfo((*i).second)));
-		}
-		else {
-			sendError(from, id, ErrorPayload::ItemNotFound, ErrorPayload::Cancel);
-		}
-	}
-	return true;
-}
-
-}
diff --git a/Swiften/Queries/Responders/DiscoInfoResponder.h b/Swiften/Queries/Responders/DiscoInfoResponder.h
deleted file mode 100644
index 3270d5d..0000000
--- a/Swiften/Queries/Responders/DiscoInfoResponder.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef SWIFTEN_DiscoInfoResponder_H
-#define SWIFTEN_DiscoInfoResponder_H
-
-#include <map>
-
-#include "Swiften/Queries/GetResponder.h"
-#include "Swiften/Elements/DiscoInfo.h"
-
-namespace Swift {
-	class IQRouter;
-
-	class DiscoInfoResponder : public GetResponder<DiscoInfo> {
-		public:
-			DiscoInfoResponder(IQRouter* router);
-
-			void setDiscoInfo(const DiscoInfo& info);
-			void setDiscoInfo(const String& node, const DiscoInfo& info);
-
-		private:
-			virtual bool handleGetRequest(const JID& from, const String& id, boost::shared_ptr<DiscoInfo> payload);
-
-		private:
-			DiscoInfo info_;
-			std::map<String, DiscoInfo> nodeInfo_;
-	};
-}
-
-#endif
diff --git a/Swiften/Queries/Responders/RosterPushResponder.h b/Swiften/Queries/Responders/RosterPushResponder.h
deleted file mode 100644
index 69185c8..0000000
--- a/Swiften/Queries/Responders/RosterPushResponder.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-
-#include "Swiften/Queries/SetResponder.h"
-#include "Swiften/Elements/RosterPayload.h"
-
-namespace Swift {
-	class RosterPushResponder : public SetResponder<RosterPayload> {
-		public:
-			RosterPushResponder(IQRouter* router) : SetResponder<RosterPayload>(router) {}
-
-		public:
-			boost::signal<void (boost::shared_ptr<RosterPayload>)> onRosterReceived;
-
-		private:
-			virtual bool handleSetRequest(const JID& from, const String& id, boost::shared_ptr<RosterPayload> payload) {
-				onRosterReceived(payload);
-				sendResponse(from, id, boost::shared_ptr<Payload>());
-				return true;
-			}
-	};
-}
diff --git a/Swiften/Queries/Responders/SoftwareVersionResponder.cpp b/Swiften/Queries/Responders/SoftwareVersionResponder.cpp
deleted file mode 100644
index e608f24..0000000
--- a/Swiften/Queries/Responders/SoftwareVersionResponder.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "Swiften/Queries/Responders/SoftwareVersionResponder.h"
-#include "Swiften/Queries/IQRouter.h"
-
-namespace Swift {
-
-SoftwareVersionResponder::SoftwareVersionResponder(
-		const String& client, const String& version, IQRouter* router) : 
-			GetResponder<SoftwareVersion>(router),  client_(client), version_(version) {
-}
-
-bool SoftwareVersionResponder::handleGetRequest(const JID& from, const String& id, boost::shared_ptr<SoftwareVersion>) {
-	sendResponse(from, id, boost::shared_ptr<SoftwareVersion>(new SoftwareVersion(client_, version_)));
-	return true;
-}
-
-}
diff --git a/Swiften/Queries/Responders/SoftwareVersionResponder.h b/Swiften/Queries/Responders/SoftwareVersionResponder.h
deleted file mode 100644
index 85d1089..0000000
--- a/Swiften/Queries/Responders/SoftwareVersionResponder.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef SWIFTEN_SoftwareVersionResponder_H
-#define SWIFTEN_SoftwareVersionResponder_H
-
-#include "Swiften/Queries/GetResponder.h"
-#include "Swiften/Elements/SoftwareVersion.h"
-
-namespace Swift {
-	class IQRouter;
-
-	class SoftwareVersionResponder : public GetResponder<SoftwareVersion> {
-		public:
-			SoftwareVersionResponder(const String& client, const String& version, IQRouter* router);
-
-		private:
-			virtual bool handleGetRequest(const JID& from, const String& id, boost::shared_ptr<SoftwareVersion> payload);
-
-		private:
-			String client_;
-			String version_;
-	};
-}
-
-#endif
diff --git a/Swiften/Queries/Responders/UnitTest/DiscoInfoResponderTest.cpp b/Swiften/Queries/Responders/UnitTest/DiscoInfoResponderTest.cpp
deleted file mode 100644
index 5993d0c..0000000
--- a/Swiften/Queries/Responders/UnitTest/DiscoInfoResponderTest.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <typeinfo>
-
-#include "Swiften/Queries/Responders/DiscoInfoResponder.h"
-#include "Swiften/Queries/IQRouter.h"
-#include "Swiften/Queries/DummyIQChannel.h"
-
-using namespace Swift;
-
-class DiscoInfoResponderTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(DiscoInfoResponderTest);
-		CPPUNIT_TEST(testHandleRequest_GetToplevelInfo);
-		CPPUNIT_TEST(testHandleRequest_GetNodeInfo);
-		CPPUNIT_TEST(testHandleRequest_GetInvalidNodeInfo);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		DiscoInfoResponderTest() {}
-
-		void setUp() {
-			channel_ = new DummyIQChannel();
-			router_ = new IQRouter(channel_);
-		}
-
-		void tearDown() {
-			delete router_;
-			delete channel_;
-		}
-
-		void testHandleRequest_GetToplevelInfo() {
-			DiscoInfoResponder testling(router_); 
-			DiscoInfo discoInfo;
-			discoInfo.addFeature("foo");
-			testling.setDiscoInfo(discoInfo);
-
-			boost::shared_ptr<DiscoInfo> query(new DiscoInfo());
-			channel_->onIQReceived(IQ::createRequest(IQ::Get, JID("foo@bar.com"), "id-1", query));
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size()));
-			boost::shared_ptr<DiscoInfo> payload(channel_->iqs_[0]->getPayload<DiscoInfo>());
-			CPPUNIT_ASSERT(payload);
-			CPPUNIT_ASSERT_EQUAL(String(""), payload->getNode());
-			CPPUNIT_ASSERT(payload->hasFeature("foo"));
-		}
-
-		void testHandleRequest_GetNodeInfo() {
-			DiscoInfoResponder testling(router_); 
-			DiscoInfo discoInfo;
-			discoInfo.addFeature("foo");
-			testling.setDiscoInfo(discoInfo);
-			DiscoInfo discoInfoBar;
-			discoInfoBar.addFeature("bar");
-			testling.setDiscoInfo("bar-node", discoInfoBar);
-
-			boost::shared_ptr<DiscoInfo> query(new DiscoInfo());
-			query->setNode("bar-node");
-			channel_->onIQReceived(IQ::createRequest(IQ::Get, JID("foo@bar.com"), "id-1", query));
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size()));
-			boost::shared_ptr<DiscoInfo> payload(channel_->iqs_[0]->getPayload<DiscoInfo>());
-			CPPUNIT_ASSERT(payload);
-			CPPUNIT_ASSERT_EQUAL(String("bar-node"), payload->getNode());
-			CPPUNIT_ASSERT(payload->hasFeature("bar"));
-		}
-
-		void testHandleRequest_GetInvalidNodeInfo() {
-			DiscoInfoResponder testling(router_); 
-
-			boost::shared_ptr<DiscoInfo> query(new DiscoInfo());
-			query->setNode("bar-node");
-			channel_->onIQReceived(IQ::createRequest(IQ::Get, JID("foo@bar.com"), "id-1", query));
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size()));
-			boost::shared_ptr<ErrorPayload> payload(channel_->iqs_[0]->getPayload<ErrorPayload>());
-			CPPUNIT_ASSERT(payload);
-		}
-
-	private:
-		IQRouter* router_;
-		DummyIQChannel* channel_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(DiscoInfoResponderTest);
diff --git a/Swiften/Queries/SetResponder.h b/Swiften/Queries/SetResponder.h
deleted file mode 100644
index 51fe39a..0000000
--- a/Swiften/Queries/SetResponder.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include "Swiften/Queries/Responder.h"
-
-namespace Swift {
-	template<typename T>
-	class SetResponder : public Responder<T> {
-		public:
-			SetResponder(IQRouter* router) : Responder<T>(router) {}
-
-		private:
-			virtual bool handleGetRequest(const JID&, const String&, boost::shared_ptr<T>) { return false; }
-	};
-}
diff --git a/Swiften/Queries/UnitTest/IQRouterTest.cpp b/Swiften/Queries/UnitTest/IQRouterTest.cpp
deleted file mode 100644
index 5760b09..0000000
--- a/Swiften/Queries/UnitTest/IQRouterTest.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/bind.hpp>
-
-#include "Swiften/Queries/IQHandler.h"
-#include "Swiften/Queries/IQRouter.h"
-#include "Swiften/Queries/DummyIQChannel.h"
-
-using namespace Swift;
-
-class IQRouterTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(IQRouterTest);
-		CPPUNIT_TEST(testRemoveHandler);
-		CPPUNIT_TEST(testRemoveHandler_AfterHandleIQ);
-		CPPUNIT_TEST(testHandleIQ_SuccesfulHandlerFirst);
-		CPPUNIT_TEST(testHandleIQ_SuccesfulHandlerLast);
-		CPPUNIT_TEST(testHandleIQ_NoSuccesfulHandler);
-		CPPUNIT_TEST(testHandleIQ_HandlerRemovedDuringHandle);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		IQRouterTest() {}
-
-		void setUp() {
-			channel_ = new DummyIQChannel();
-		}
-
-		void tearDown() {
-			delete channel_;
-		}
-
-		void testRemoveHandler() {
-			IQRouter testling(channel_);
-			DummyIQHandler handler1(true, &testling);
-			DummyIQHandler handler2(true, &testling);
-			testling.removeHandler(&handler1);
-
-			channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ()));
-
-			CPPUNIT_ASSERT_EQUAL(0, handler1.called);
-			CPPUNIT_ASSERT_EQUAL(1, handler2.called);
-		}
-
-		void testRemoveHandler_AfterHandleIQ() {
-			IQRouter testling(channel_);
-			DummyIQHandler handler1(true, &testling);
-			DummyIQHandler handler2(true, &testling);
-
-			channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ()));
-			testling.removeHandler(&handler1);
-			channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ()));
-
-			CPPUNIT_ASSERT_EQUAL(1, handler1.called);
-			CPPUNIT_ASSERT_EQUAL(1, handler2.called);
-		}
-
-		void testHandleIQ_SuccesfulHandlerFirst() {
-			IQRouter testling(channel_);
-			DummyIQHandler handler1(true, &testling);
-			DummyIQHandler handler2(false, &testling);
-
-			channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ()));
-
-			CPPUNIT_ASSERT_EQUAL(1, handler1.called);
-			CPPUNIT_ASSERT_EQUAL(0, handler2.called);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(channel_->iqs_.size()));
-		}
-
-		void testHandleIQ_SuccesfulHandlerLast() {
-			IQRouter testling(channel_);
-			DummyIQHandler handler1(false, &testling);
-			DummyIQHandler handler2(true, &testling);
-
-			channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ()));
-
-			CPPUNIT_ASSERT_EQUAL(1, handler1.called);
-			CPPUNIT_ASSERT_EQUAL(1, handler2.called);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(channel_->iqs_.size()));
-		}
-
-		void testHandleIQ_NoSuccesfulHandler() {
-			IQRouter testling(channel_);
-			DummyIQHandler handler(false, &testling);
-
-			channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ()));
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size()));
-			CPPUNIT_ASSERT(channel_->iqs_[0]->getPayload<ErrorPayload>());
-		}
-
-
-		void testHandleIQ_HandlerRemovedDuringHandle() {
-			IQRouter testling(channel_);
-			RemovingIQHandler handler1(&testling);
-			DummyIQHandler handler2(true, &testling);
-
-			channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ()));
-			channel_->onIQReceived(boost::shared_ptr<IQ>(new IQ()));
-
-			CPPUNIT_ASSERT_EQUAL(1, handler1.called);
-			CPPUNIT_ASSERT_EQUAL(2, handler2.called);
-		}
-
-	private:
-		struct DummyIQHandler : public IQHandler {
-			DummyIQHandler(bool handle, IQRouter* router) : handle(handle), router(router), called(0) {
-				router->addHandler(this);
-			}
-
-			~DummyIQHandler() {
-				router->removeHandler(this);
-			}
-
-			virtual bool handleIQ(boost::shared_ptr<IQ>) {
-				called++;
-				return handle;
-			}
-			bool handle;
-			IQRouter* router;
-			int called;
-		};
-
-		struct RemovingIQHandler : public IQHandler {
-			RemovingIQHandler(IQRouter* router) : router(router), called(0) {
-				router->addHandler(this);
-			}
-
-			virtual bool handleIQ(boost::shared_ptr<IQ>) {
-				called++;
-				router->removeHandler(this);
-				return false;
-			}
-			IQRouter* router;
-			int called;
-		};
-
-
-		DummyIQChannel* channel_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(IQRouterTest);
diff --git a/Swiften/Queries/UnitTest/RequestTest.cpp b/Swiften/Queries/UnitTest/RequestTest.cpp
deleted file mode 100644
index c569bb5..0000000
--- a/Swiften/Queries/UnitTest/RequestTest.cpp
+++ /dev/null
@@ -1,167 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/bind.hpp>
-
-#include "Swiften/Queries/GenericRequest.h"
-#include "Swiften/Queries/IQRouter.h"
-#include "Swiften/Queries/DummyIQChannel.h"
-#include "Swiften/Elements/Payload.h"
-
-using namespace Swift;
-
-class RequestTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(RequestTest);
-		CPPUNIT_TEST(testSendGet);
-		CPPUNIT_TEST(testSendSet);
-		CPPUNIT_TEST(testHandleIQ);
-		CPPUNIT_TEST(testHandleIQ_InvalidID);
-		CPPUNIT_TEST(testHandleIQ_Error);
-		CPPUNIT_TEST(testHandleIQ_ErrorWithoutPayload);
-		CPPUNIT_TEST(testHandleIQ_BeforeSend);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		class MyPayload : public Payload {
-			public:
-				MyPayload(const String& s = "") : text_(s) {}
-				String text_;
-		};
-
-		typedef GenericRequest<MyPayload> MyRequest;
-
-	public:
-		RequestTest() {}
-
-		void setUp() {
-			channel_ = new DummyIQChannel();
-			router_ = new IQRouter(channel_);
-			payload_ = boost::shared_ptr<Payload>(new MyPayload("foo"));
-			responsePayload_ = boost::shared_ptr<Payload>(new MyPayload("bar"));
-			responsesReceived_ = 0;
-		}
-
-		void tearDown() {
-			delete router_;
-			delete channel_;
-		}
-
-		void testSendSet() {
-			MyRequest testling(IQ::Set, JID("foo@bar.com/baz"), payload_, router_);
-			testling.send();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size()));
-			CPPUNIT_ASSERT_EQUAL(JID("foo@bar.com/baz"), channel_->iqs_[0]->getTo());
-			CPPUNIT_ASSERT_EQUAL(IQ::Set, channel_->iqs_[0]->getType());
-			CPPUNIT_ASSERT_EQUAL(String("test-id"), channel_->iqs_[0]->getID());
-		}
-
-		void testSendGet() {
-			MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_);
-			testling.send();
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size()));
-			CPPUNIT_ASSERT_EQUAL(IQ::Get, channel_->iqs_[0]->getType());
-		}
-
-		void testHandleIQ() {
-			MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_);
-			testling.onResponse.connect(boost::bind(&RequestTest::handleResponse, this, _1, _2));
-			testling.send();
-			
-			channel_->onIQReceived(createResponse("test-id"));
-
-			CPPUNIT_ASSERT_EQUAL(1, responsesReceived_);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(receivedErrors.size()));
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size()));
-		}
-
-		// FIXME: Doesn't test that it didn't handle the payload
-		void testHandleIQ_InvalidID() {
-			MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_);
-			testling.onResponse.connect(boost::bind(&RequestTest::handleResponse, this, _1, _2));
-			testling.send();
-
-			channel_->onIQReceived(createResponse("different-id"));
-
-			CPPUNIT_ASSERT_EQUAL(0, responsesReceived_);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(receivedErrors.size()));
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size()));
-		}
-
-		void testHandleIQ_Error() {
-			MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_);
-			testling.onResponse.connect(boost::bind(&RequestTest::handleResponse, this, _1, _2));
-			testling.send();
-
-			boost::shared_ptr<IQ> error = createError("test-id");
-			boost::shared_ptr<Payload> errorPayload = boost::shared_ptr<ErrorPayload>(new ErrorPayload(ErrorPayload::FeatureNotImplemented));
-			error->addPayload(errorPayload);
-			channel_->onIQReceived(error);
-
-			CPPUNIT_ASSERT_EQUAL(0, responsesReceived_);
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(receivedErrors.size()));
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size()));
-			CPPUNIT_ASSERT_EQUAL(ErrorPayload::FeatureNotImplemented, receivedErrors[0].getCondition());
-		}
-
-		void testHandleIQ_ErrorWithoutPayload() {
-			MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_);
-			testling.onResponse.connect(boost::bind(&RequestTest::handleResponse, this, _1, _2));
-			testling.send();
-
-			channel_->onIQReceived(createError("test-id"));
-
-			CPPUNIT_ASSERT_EQUAL(0, responsesReceived_);
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(receivedErrors.size()));
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(channel_->iqs_.size()));
-			CPPUNIT_ASSERT_EQUAL(ErrorPayload::UndefinedCondition, receivedErrors[0].getCondition());
-		}
-
-		void testHandleIQ_BeforeSend() {
-			MyRequest testling(IQ::Get, JID("foo@bar.com/baz"), payload_, router_);
-			testling.onResponse.connect(boost::bind(&RequestTest::handleResponse, this, _1, _2));
-			channel_->onIQReceived(createResponse("test-id"));
-
-			CPPUNIT_ASSERT_EQUAL(0, responsesReceived_);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(receivedErrors.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(channel_->iqs_.size()));
-		}
-	
-	private:
-		void handleResponse(boost::shared_ptr<Payload> p, const boost::optional<ErrorPayload>& e) {
-			if (e) {
-				receivedErrors.push_back(*e);
-			}
-			else {
-				boost::shared_ptr<MyPayload> payload(boost::dynamic_pointer_cast<MyPayload>(p));
-				CPPUNIT_ASSERT(payload);
-				CPPUNIT_ASSERT_EQUAL(String("bar"), payload->text_);
-				++responsesReceived_;
-			}
-		}
-
-		boost::shared_ptr<IQ> createResponse(const String& id) {
-			boost::shared_ptr<IQ> iq(new IQ(IQ::Result));
-			iq->addPayload(responsePayload_);
-			iq->setID(id);
-			return iq;
-		}
-
-		boost::shared_ptr<IQ> createError(const String& id) {
-			boost::shared_ptr<IQ> iq(new IQ(IQ::Error));
-			iq->setID(id);
-			return iq;
-		}
-	
-	private:
-		IQRouter* router_;
-		DummyIQChannel* channel_;
-		boost::shared_ptr<Payload> payload_;
-		boost::shared_ptr<Payload> responsePayload_;
-		int responsesReceived_;
-		std::vector<ErrorPayload> receivedErrors;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(RequestTest);
diff --git a/Swiften/Queries/UnitTest/ResponderTest.cpp b/Swiften/Queries/UnitTest/ResponderTest.cpp
deleted file mode 100644
index 5c758e4..0000000
--- a/Swiften/Queries/UnitTest/ResponderTest.cpp
+++ /dev/null
@@ -1,132 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/bind.hpp>
-
-#include "Swiften/Queries/Responder.h"
-#include "Swiften/Queries/IQRouter.h"
-#include "Swiften/Queries/DummyIQChannel.h"
-#include "Swiften/Elements/SoftwareVersion.h"
-
-using namespace Swift;
-
-class ResponderTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(ResponderTest);
-		CPPUNIT_TEST(testConstructor);
-		CPPUNIT_TEST(testHandleIQ_Set);
-		CPPUNIT_TEST(testHandleIQ_Get);
-		CPPUNIT_TEST(testHandleIQ_Error);
-		CPPUNIT_TEST(testHandleIQ_Result);
-		CPPUNIT_TEST(testHandleIQ_NoPayload);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		ResponderTest() {}
-
-		void setUp() {
-			channel_ = new DummyIQChannel();
-			router_ = new IQRouter(channel_);
-			payload_ = boost::shared_ptr<SoftwareVersion>(new SoftwareVersion("foo"));
-		}
-
-		void tearDown() {
-			delete router_;
-			delete channel_;
-		}
-
-		void testConstructor() {
-			MyResponder testling(router_);
-
-			channel_->onIQReceived(createRequest(IQ::Set));
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(testling.setPayloads_.size()));
-		}
-
-		void testHandleIQ_Set() {
-			MyResponder testling(router_);
-
-			CPPUNIT_ASSERT(dynamic_cast<IQHandler*>(&testling)->handleIQ(createRequest(IQ::Set)));
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(testling.setPayloads_.size()));
-			CPPUNIT_ASSERT(payload_ == testling.setPayloads_[0]);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.getPayloads_.size()));
-		}
-
-		void testHandleIQ_Get() {
-			MyResponder testling(router_);
-
-			CPPUNIT_ASSERT(dynamic_cast<IQHandler*>(&testling)->handleIQ(createRequest(IQ::Get)));
-
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(testling.getPayloads_.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.setPayloads_.size()));
-			CPPUNIT_ASSERT(payload_ == testling.getPayloads_[0]);
-		}
-
-		void testHandleIQ_Error() {
-			MyResponder testling(router_);
-
-			CPPUNIT_ASSERT(!dynamic_cast<IQHandler*>(&testling)->handleIQ(createRequest(IQ::Error)));
-
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.getPayloads_.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.setPayloads_.size()));
-		}
-
-		void testHandleIQ_Result() {
-			MyResponder testling(router_);
-
-			CPPUNIT_ASSERT(!dynamic_cast<IQHandler*>(&testling)->handleIQ(createRequest(IQ::Result)));
-
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.getPayloads_.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.setPayloads_.size()));
-		}
-
-		void testHandleIQ_NoPayload() {
-			MyResponder testling(router_);
-
-			CPPUNIT_ASSERT(!dynamic_cast<IQHandler*>(&testling)->handleIQ(boost::shared_ptr<IQ>(new IQ(IQ::Get))));
-
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.getPayloads_.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(testling.setPayloads_.size()));
-		}
-
-	private:
-		boost::shared_ptr<IQ> createRequest(IQ::Type type) {
-			boost::shared_ptr<IQ> iq(new IQ(type));
-			iq->addPayload(payload_);
-			iq->setID("myid");
-			iq->setFrom(JID("foo@bar.com/baz"));
-			return iq;
-		}
-
-	private:
-		class MyResponder : public Responder<SoftwareVersion> {
-			public:
-				MyResponder(IQRouter* router) : Responder<SoftwareVersion>(router), getRequestResponse_(true), setRequestResponse_(true) {}
-
-				virtual bool handleGetRequest(const JID& from, const String& id, boost::shared_ptr<SoftwareVersion> payload) {
-					CPPUNIT_ASSERT_EQUAL(JID("foo@bar.com/baz"), from);
-					CPPUNIT_ASSERT_EQUAL(String("myid"), id);
-					getPayloads_.push_back(payload);
-					return getRequestResponse_;
-				}
-				virtual bool handleSetRequest(const JID& from, const String& id, boost::shared_ptr<SoftwareVersion> payload) {
-					CPPUNIT_ASSERT_EQUAL(JID("foo@bar.com/baz"), from);
-					CPPUNIT_ASSERT_EQUAL(String("myid"), id);
-					setPayloads_.push_back(payload);
-					return setRequestResponse_;
-				}
-
-				bool getRequestResponse_;
-				bool setRequestResponse_;
-				std::vector<boost::shared_ptr<SoftwareVersion> > getPayloads_;
-				std::vector<boost::shared_ptr<SoftwareVersion> > setPayloads_;
-		};
-
-	private:
-		IQRouter* router_;
-		DummyIQChannel* channel_;
-		boost::shared_ptr<SoftwareVersion> payload_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ResponderTest);
diff --git a/Swiften/Roster/AppearOffline.h b/Swiften/Roster/AppearOffline.h
deleted file mode 100644
index 673e018..0000000
--- a/Swiften/Roster/AppearOffline.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-
-#include "Swiften/Roster/RosterItemOperation.h"
-#include "Swiften/Roster/ContactRosterItem.h"
-
-namespace Swift {
-
-class RosterItem;
-
-class AppearOffline : public RosterItemOperation {
-	public:
-		AppearOffline() {
-		}
-
-		virtual void operator() (RosterItem* item) const {
-			ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item);
-			if (contact) {
-				contact->setStatusShow(StatusShow::None);
-			}
-		}
-
-};
-
-}
-
-
diff --git a/Swiften/Roster/ContactRosterItem.cpp b/Swiften/Roster/ContactRosterItem.cpp
deleted file mode 100644
index 968f7f1..0000000
--- a/Swiften/Roster/ContactRosterItem.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "Swiften/Roster/ContactRosterItem.h"
-#include "Swiften/Roster/GroupRosterItem.h"
-
-namespace Swift {
-
-
-ContactRosterItem::ContactRosterItem(const JID& jid, const String& name, GroupRosterItem* parent, TreeWidgetFactory* factory) : jid_(jid), name_(name) {
-	parent->addChild(this);
-	widget_ = factory->createTreeWidgetItem(parent->getWidget());
-	widget_->setText(name.isEmpty() ? jid.toString() : name);
-	widget_->onUserAction.connect(boost::bind(&ContactRosterItem::handleUserAction, this, _1));
-	setStatusShow(StatusShow::None);
-}
-
-ContactRosterItem::~ContactRosterItem() {
-	delete widget_;
-}
-
-StatusShow::Type ContactRosterItem::getStatusShow() {
-	return statusShow_;
-}
-
-void ContactRosterItem::setStatusShow(StatusShow::Type show) {
-	statusShow_ = show;
-	widget_->setStatusShow(show);
-}
-
-void ContactRosterItem::setStatusText(const String& status) {
-	widget_->setStatusText(status);
-}
-
-void ContactRosterItem::setAvatarPath(const String& path) {
-	widget_->setAvatarPath(path);
-}
-
-const JID& ContactRosterItem::getJID() const {
-	return jid_;
-}
-
-void ContactRosterItem::show() {
-	widget_->show();
-}
-
-void ContactRosterItem::hide() {
-	widget_->hide();
-}
-
-}
-
-
diff --git a/Swiften/Roster/ContactRosterItem.h b/Swiften/Roster/ContactRosterItem.h
deleted file mode 100644
index f1810aa..0000000
--- a/Swiften/Roster/ContactRosterItem.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef SWIFTEN_ContactRosterItem_H
-#define SWIFTEN_ContactRosterItem_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/Roster/TreeWidgetFactory.h"
-#include "Swiften/Roster/RosterItem.h"
-#include "Swiften/Roster/UserRosterAction.h"
-#include "Swiften/Elements/StatusShow.h"
-
-#include <boost/bind.hpp>
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-
-namespace Swift {
-
-class TreeWidgetItem;
-class GroupRosterItem;
-class ContactRosterItem : public RosterItem {
-	public:
-		ContactRosterItem(const JID& jid, const String& name, GroupRosterItem* parent, TreeWidgetFactory* factory);
-		~ContactRosterItem();
-
-		StatusShow::Type getStatusShow();
-		void setStatusShow(StatusShow::Type show);
-		void setStatusText(const String& status);
-		void setAvatarPath(const String& path);
-		const JID& getJID() const;
-		void show();
-		void hide();
-
-	private:
-		JID jid_;
-		String name_;
-		TreeWidgetItem *widget_;
-		StatusShow::Type statusShow_;
-};
-
-}
-#endif
-
diff --git a/Swiften/Roster/GroupRosterItem.h b/Swiften/Roster/GroupRosterItem.h
deleted file mode 100644
index 2ab59ea..0000000
--- a/Swiften/Roster/GroupRosterItem.h
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef SWIFTEN_GroupRosterItem_H
-#define SWIFTEN_GroupRosterItem_H
-
-#include "Swiften/Roster/RosterItem.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Roster/TreeWidget.h"
-#include "Swiften/Roster/TreeWidgetFactory.h"
-#include "Swiften/Roster/TreeWidgetItem.h"
-#include "Swiften/Roster/ContactRosterItem.h"
-
-#include <list>
-
-namespace Swift {
-
-class GroupRosterItem : public RosterItem {
-	public:
-		GroupRosterItem(const String& name, TreeWidget* tree, TreeWidgetFactory* factory) : name_(name) {
-			widget_ = factory->createTreeWidgetItem(tree);
-			widget_->setExpanded(true);
-			widget_->setText(name);
-		}
-
-		~GroupRosterItem() {
-			delete widget_;
-		}
-
-		const String& getName() const {
-			return name_;
-		}
-
-		TreeWidgetItem* getWidget() const {
-			return widget_;
-		}
-
-		const std::list<RosterItem*>& getChildren() const {
-			return children_;
-		}
-
-		void addChild(RosterItem* item) {
-			children_.push_back(item);
-		}
-
-		void removeChild(const JID& jid) {
-			std::list<RosterItem*>::iterator it = children_.begin();
-			while (it != children_.end()) {
-				ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(*it);
-				if (contact && contact->getJID() == jid) {
-					delete contact;
-					it = children_.erase(it);
-					continue;
-				} 
-				GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(*it);
-				if (group) {
-					group->removeChild(jid);
-				}
-				it++;
-			}
-		}
-
-	private:
-		String name_;
-		TreeWidgetItem* widget_;
-		std::list<RosterItem*> children_;
-};
-
-}
-#endif
-
diff --git a/Swiften/Roster/OfflineRosterFilter.h b/Swiften/Roster/OfflineRosterFilter.h
deleted file mode 100644
index 512d074..0000000
--- a/Swiften/Roster/OfflineRosterFilter.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef SWIFTEN_OfflineRosterFilter_H
-#define SWIFTEN_OfflineRosterFilter_H
-
-#include "Swiften/Roster/ContactRosterItem.h"
-#include "Swiften/Roster/RosterItem.h"
-#include "Swiften/Roster/RosterFilter.h"
-#include "Swiften/Elements/StatusShow.h"
-
-namespace Swift {
-
-class OfflineRosterFilter : public RosterFilter {
-	public:
-		virtual ~OfflineRosterFilter() {}
-		virtual bool operator() (RosterItem *item) const {
-			ContactRosterItem *contactItem = dynamic_cast<ContactRosterItem*>(item);
-			return contactItem && contactItem->getStatusShow() == StatusShow::None;
-		}
-};
-
-}
-#endif
-
-
-
diff --git a/Swiften/Roster/OpenChatRosterAction.h b/Swiften/Roster/OpenChatRosterAction.h
deleted file mode 100644
index 03715a5..0000000
--- a/Swiften/Roster/OpenChatRosterAction.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef SWIFTEN_OpenChatRosterAction_H
-#define SWIFTEN_OpenChatRosterAction_H
-
-#include "Swiften/Roster/UserRosterAction.h"
-
-namespace Swift {
-class RosterItem;
-class TreeWidgetItem;
-
-class OpenChatRosterAction : public UserRosterAction {
-	public:
-		virtual ~OpenChatRosterAction() {};
-
-};
-
-}
-#endif
-
-
-
diff --git a/Swiften/Roster/Roster.cpp b/Swiften/Roster/Roster.cpp
deleted file mode 100644
index 28245af..0000000
--- a/Swiften/Roster/Roster.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-#include "Swiften/Roster/Roster.h"
-
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/Roster/ContactRosterItem.h"
-#include "Swiften/Roster/RosterItem.h"
-#include "Swiften/Roster/GroupRosterItem.h"
-#include "Swiften/Roster/RosterItemOperation.h"
-#include "Swiften/Roster/TreeWidget.h"
-#include "Swiften/Roster/TreeWidgetFactory.h"
-
-#include <boost/bind.hpp>
-
-#include <deque>
-
-namespace Swift {
-
-Roster::Roster(TreeWidget *treeWidget, TreeWidgetFactory *widgetFactory) : treeWidget_(treeWidget), widgetFactory_(widgetFactory) {
-}
-
-Roster::~Roster() {
-	foreach (RosterItem* item, items_) {
-		delete item;
-	}
-	delete treeWidget_;
-}
-
-TreeWidget* Roster::getWidget() {
-	return treeWidget_;
-}
-
-GroupRosterItem* Roster::getGroup(const String& groupName) {
-	foreach (RosterItem *item, children_) {
-		GroupRosterItem *group = dynamic_cast<GroupRosterItem*>(item);
-		if (group && group->getName() == groupName) {
-			return group;
-		}
-	}
-	GroupRosterItem* group = new GroupRosterItem(groupName, treeWidget_, widgetFactory_);
-	children_.push_back(group);
-	items_.push_back(group);
-	return group;
-}
-
-void Roster::handleUserAction(boost::shared_ptr<UserRosterAction> action) {
-	onUserAction(action);
-}
-
-void Roster::addContact(const JID& jid, const String& name, const String& group) {
-	ContactRosterItem *item = new ContactRosterItem(jid, name, getGroup(group), widgetFactory_);
-	items_.push_back(item);
-	item->onUserAction.connect(boost::bind(&Roster::handleUserAction, this, _1));
-	filterItem(item);
-
-}
-
-void Roster::removeContact(const JID& jid) {
-	std::vector<RosterItem*>::iterator it = children_.begin();
-	while (it != children_.end()) {
-		ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(*it);
-		if (contact && contact->getJID() == jid) {
-			delete contact;
-			it = children_.erase(it);
-			continue;
-		} 
-		GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(*it);
-		if (group) {
-			group->removeChild(jid);
-		}
-		it++;
-	}
-}
-
-void Roster::removeContactFromGroup(const JID& jid, const String& groupName) {
-	std::vector<RosterItem*>::iterator it = children_.begin();
-	while (it != children_.end()) {
-		GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(*it);
-		if (group && group->getName() == groupName) {
-			group->removeChild(jid);
-		}
-		it++;
-	}
-}
-
-
-void Roster::applyOnItems(const RosterItemOperation& operation) {
-	std::deque<RosterItem*> queue(children_.begin(), children_.end());
-	while (!queue.empty()) {
-		RosterItem* item = *queue.begin();
-		queue.pop_front();
-		operation(item);
-		GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(item);
-		if (group) {
-			queue.insert(queue.begin(), group->getChildren().begin(), group->getChildren().end());
-		}
-	}
-	filterAll();
-}
-
-void Roster::removeFilter(RosterFilter *filter) {
-	for (unsigned int i = 0; i < filters_.size(); i++) {
-		if (filters_[i] == filter) {
-			filters_.erase(filters_.begin() + i);
-			break;
-		}
-	}
-	filterAll();
-}
-
-
-void Roster::filterItem(RosterItem* rosterItem) {
-	ContactRosterItem *item = dynamic_cast<ContactRosterItem*>(rosterItem);
-	if (!item) {
-		return;
-	}
-	bool hide = true;
-	foreach (RosterFilter *filter, filters_) {
-		hide &= (*filter)(item);
-	}
-	filters_.size() > 0 && hide ? item->hide() : item->show();
-}
-
-void Roster::filterAll() {
-	std::deque<RosterItem*> queue(children_.begin(), children_.end());
-	while (!queue.empty()) {
-		RosterItem *item = *queue.begin();
-		queue.pop_front();
-		GroupRosterItem* group = dynamic_cast<GroupRosterItem*>(item);
-		if (group) {
-			queue.insert(queue.begin(), group->getChildren().begin(), group->getChildren().end());
-		} else {
-			filterItem(item);
-		}
-	}
-}
-
-}
-
diff --git a/Swiften/Roster/Roster.h b/Swiften/Roster/Roster.h
deleted file mode 100644
index 6010832..0000000
--- a/Swiften/Roster/Roster.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef SWIFTEN_Roster_H
-#define SWIFTEN_Roster_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/Roster/RosterItemOperation.h"
-#include "Swiften/Roster/UserRosterAction.h"
-#include "Swiften/Roster/RosterFilter.h"
-
-#include <vector>
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-
-namespace Swift {
-
-class TreeWidgetFactory;
-class TreeWidget;
-class RosterItem;
-class GroupRosterItem;
-
-class Roster {
-	public:
-		Roster(TreeWidget *treeWidget, TreeWidgetFactory *widgetFactory);
-		~Roster();
-
-		TreeWidget* getWidget();
-		GroupRosterItem* getGroup(const String& groupName);
-		void addContact(const JID& jid, const String& name, const String& group);
-		void removeContact(const JID& jid);
-		void removeContactFromGroup(const JID& jid, const String& group);
-		void applyOnItems(const RosterItemOperation& operation);
-		boost::signal<void (boost::shared_ptr<UserRosterAction>)> onUserAction;
-		void addFilter(RosterFilter *filter) {filters_.push_back(filter);filterAll();}
-		void removeFilter(RosterFilter *filter);
-		std::vector<RosterFilter*> getFilters() {return filters_;}
-
-	private:
-		void filterItem(RosterItem* item);
-		void filterAll();
-		void handleUserAction(boost::shared_ptr<UserRosterAction> action);
-		TreeWidget *treeWidget_;
-		TreeWidgetFactory *widgetFactory_;
-		std::vector<RosterItem*> children_;
-		std::vector<RosterItem*> items_;
-		std::vector<RosterFilter*> filters_;
-};
-}
-
-#endif
diff --git a/Swiften/Roster/RosterFilter.h b/Swiften/Roster/RosterFilter.h
deleted file mode 100644
index a824304..0000000
--- a/Swiften/Roster/RosterFilter.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef SWIFTEN_RosterFilter_H
-#define SWIFTEN_RosterFilter_H
-
-#include "Swiften/Roster/RosterItem.h"
-
-namespace Swift {
-
-class RosterFilter {
-	public:
-		virtual ~RosterFilter() {}
-		virtual bool operator() (RosterItem* item) const = 0;
-};
-
-}
-#endif
-
-
diff --git a/Swiften/Roster/RosterItem.h b/Swiften/Roster/RosterItem.h
deleted file mode 100644
index 2707920..0000000
--- a/Swiften/Roster/RosterItem.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef SWIFTEN_RosterItem_H
-#define SWIFTEN_RosterItem_H
-
-#include "Swiften/Roster/UserRosterAction.h"
-
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-
-namespace Swift {
-
-class RosterItem {
-	public:
-		virtual ~RosterItem() {};
-		boost::signal<void (boost::shared_ptr<UserRosterAction>)> onUserAction;
-	protected:
-		void handleUserAction(boost::shared_ptr<UserRosterAction> action) {
-			action->setRosterItem(this);
-			onUserAction(action);
-		}
-};
-
-}
-#endif
-
diff --git a/Swiften/Roster/RosterItemOperation.h b/Swiften/Roster/RosterItemOperation.h
deleted file mode 100644
index ea8e723..0000000
--- a/Swiften/Roster/RosterItemOperation.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_RosterItemOperation_H
-#define SWIFTEN_RosterItemOperation_H
-
-#include "Swiften/Roster/RosterItem.h"
-
-namespace Swift {
-
-class RosterItemOperation {
-	public:
-		virtual ~RosterItemOperation() {}
-		virtual void operator() (RosterItem*) const = 0;
-};
-
-}
-#endif
-
diff --git a/Swiften/Roster/SetAvatar.h b/Swiften/Roster/SetAvatar.h
deleted file mode 100644
index 7bc9c37..0000000
--- a/Swiften/Roster/SetAvatar.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef SWIFTEN_SetAvatar_H
-#define SWIFTEN_SetAvatar_H
-
-#include "Swiften/Elements/Presence.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/Roster/RosterItemOperation.h"
-#include "Swiften/Roster/ContactRosterItem.h"
-
-namespace Swift {
-
-class RosterItem;
-
-class SetAvatar : public RosterItemOperation {
-	public:
-		SetAvatar(const JID& jid, const String& path, JID::CompareType compareType = JID::WithoutResource) : jid_(jid), path_(path), compareType_(compareType) {
-		}
-
-		virtual void operator() (RosterItem* item) const {
-			ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item);
-			if (contact && contact->getJID().equals(jid_, compareType_)) {
-				contact->setAvatarPath(path_);
-			}
-		}
-	
-	private:
-		JID jid_;
-		String path_;
-		JID::CompareType compareType_;
-};
-
-}
-#endif
-
diff --git a/Swiften/Roster/SetPresence.h b/Swiften/Roster/SetPresence.h
deleted file mode 100644
index a18ae6d..0000000
--- a/Swiften/Roster/SetPresence.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SWIFTEN_SetPresence_H
-#define SWIFTEN_SetPresence_H
-
-#include "Swiften/Elements/Presence.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/Roster/RosterItemOperation.h"
-#include "Swiften/Roster/ContactRosterItem.h"
-
-namespace Swift {
-
-class RosterItem;
-
-class SetPresence : public RosterItemOperation {
-	public:
-		SetPresence(boost::shared_ptr<Presence> presence, JID::CompareType compareType = JID::WithoutResource) : presence_(presence), compareType_(compareType) {
-		}
-
-		virtual void operator() (RosterItem* item) const {
-			ContactRosterItem* contact = dynamic_cast<ContactRosterItem*>(item);
-			if (contact && contact->getJID().equals(presence_->getFrom(), compareType_)) {
-				if (presence_->getType() != Presence::Available) {
-					contact->setStatusShow(StatusShow::None);
-					contact->setStatusText(presence_->getStatus());
-				} else {
-					contact->setStatusShow(presence_->getShow());
-					contact->setStatusText(presence_->getStatus());
-				}
-			}
-		}
-	
-	private:
-		boost::shared_ptr<Presence> presence_;
-		JID::CompareType compareType_;
-};
-
-}
-#endif
-
diff --git a/Swiften/Roster/TreeWidget.h b/Swiften/Roster/TreeWidget.h
deleted file mode 100644
index a26003e..0000000
--- a/Swiften/Roster/TreeWidget.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef SWIFTEN_TreeWidget_H
-#define SWIFTEN_TreeWidget_H
-
-namespace Swift {
-
-class TreeWidget {
-	public:
-		virtual ~TreeWidget() {}
-};
-
-}
-#endif
-
diff --git a/Swiften/Roster/TreeWidgetFactory.h b/Swiften/Roster/TreeWidgetFactory.h
deleted file mode 100644
index f4ba68d..0000000
--- a/Swiften/Roster/TreeWidgetFactory.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef SWIFTEN_TreeWidgetFactory_H
-#define SWIFTEN_TreeWidgetFactory_H
-
-namespace Swift {
-
-class TreeWidgetItem;
-class TreeWidget;
-
-class TreeWidgetFactory {
-	public:
-		virtual ~TreeWidgetFactory() {}
-		virtual TreeWidget* createTreeWidget() = 0;
-		virtual TreeWidgetItem* createTreeWidgetItem(TreeWidgetItem* item) = 0;
-		virtual TreeWidgetItem* createTreeWidgetItem(TreeWidget* item) = 0;
-};
-
-}
-
-#endif
-
diff --git a/Swiften/Roster/TreeWidgetItem.h b/Swiften/Roster/TreeWidgetItem.h
deleted file mode 100644
index 4124546..0000000
--- a/Swiften/Roster/TreeWidgetItem.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef SWIFTEN_TreeWidgetItem_H
-#define SWIFTEN_TreeWidgetItem_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Roster/UserRosterAction.h"
-#include "Swiften/Elements/StatusShow.h"
-
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-
-namespace Swift {
-
-class TreeWidgetItem {
-	public:
-		virtual ~TreeWidgetItem() {}
-		virtual void setText(const String& text) = 0;
-		virtual void setStatusText(const String& text) = 0;
-		virtual void setAvatarPath(const String& path) = 0;
-		virtual void setExpanded(bool b) = 0;
-		//virtual void setTextColor(unsigned long color) = 0;
-		virtual void setStatusShow(StatusShow::Type show) = 0;
-		//virtual void setBackgroundColor(unsigned long color) = 0;
-		boost::signal<void (boost::shared_ptr<UserRosterAction>)> onUserAction;
-		virtual void show() = 0;
-		virtual void hide() = 0;
-		void performUserAction(boost::shared_ptr<UserRosterAction> action) {
-			action->setTreeWidgetItem(this);
-			onUserAction(action);
-		}
-};
-
-}
-#endif
-
diff --git a/Swiften/Roster/UnitTest/MockTreeWidget.h b/Swiften/Roster/UnitTest/MockTreeWidget.h
deleted file mode 100644
index e6f6def..0000000
--- a/Swiften/Roster/UnitTest/MockTreeWidget.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SWIFTEN_MockTreeWidget_H
-#define SWIFTEN_MockTreeWidget_H
-
-#include "Swiften/Roster/TreeWidget.h"
-
-namespace Swift {
-
-class MockTreeWidget : public TreeWidget {
-	public:
-		virtual ~MockTreeWidget() {}
-};
-
-}
-#endif
diff --git a/Swiften/Roster/UnitTest/MockTreeWidgetFactory.h b/Swiften/Roster/UnitTest/MockTreeWidgetFactory.h
deleted file mode 100644
index b2b4f10..0000000
--- a/Swiften/Roster/UnitTest/MockTreeWidgetFactory.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef SWIFTEN_MockTreeWidgetFactory_H
-#define SWIFTEN_MockTreeWidgetFactory_H
-
-#include "Swiften/Roster/TreeWidgetFactory.h"
-
-#include <vector>
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Roster/UnitTest/MockTreeWidget.h"
-#include "Swiften/Roster/UnitTest/MockTreeWidgetItem.h"
-
-namespace Swift {
-
-class MockTreeWidgetItem;
-class MockTreeWidget;
-
-class MockTreeWidgetFactory : public TreeWidgetFactory {
-	public:
-		virtual ~MockTreeWidgetFactory() {}
-		virtual TreeWidget* createTreeWidget() {
-			root_ = new MockTreeWidget();
-			return root_;
-		};
-		virtual TreeWidgetItem* createTreeWidgetItem(TreeWidgetItem* group) {
-			MockTreeWidgetItem* entry = new MockTreeWidgetItem();
-			groupMembers_[group].push_back(entry);
-			return entry;
-		};
-		virtual TreeWidgetItem* createTreeWidgetItem(TreeWidget*) {
-			MockTreeWidgetItem* group = new MockTreeWidgetItem();
-			groups_.push_back(group);
-			return group;
-		};
-		virtual std::vector<String> getGroups() {
-			std::vector<String> groupNames;
-			foreach (MockTreeWidgetItem* group, groups_) {
-				groupNames.push_back(group->getText());
-			}
-			return groupNames;
-		};
-	private:
-		std::vector<MockTreeWidgetItem*> groups_;
-		std::map<TreeWidgetItem*, std::vector<MockTreeWidgetItem*> > groupMembers_;
-		MockTreeWidget* root_;
-};
-
-}
-
-#endif
-
-
diff --git a/Swiften/Roster/UnitTest/MockTreeWidgetItem.h b/Swiften/Roster/UnitTest/MockTreeWidgetItem.h
deleted file mode 100644
index a40aca7..0000000
--- a/Swiften/Roster/UnitTest/MockTreeWidgetItem.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef SWIFTEN_MockTreeWidgetItem_H
-#define SWIFTEN_MockTreeWidgetItem_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Roster/TreeWidgetItem.h"
-
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-
-namespace Swift {
-
-class MockTreeWidgetItem : public TreeWidgetItem {
-	public:
-		virtual ~MockTreeWidgetItem() {};
-		virtual void setText(const String& text) {text_ = text;};
-		String getText() {return text_;};
-		virtual void setStatusText(const String&) {};
-		virtual void setAvatarPath(const String&) {};
-		virtual void setExpanded(bool) {};
-		virtual void setStatusShow(StatusShow::Type /*show*/) {};
-		virtual void show() {};
-		virtual void hide() {};
-	private:
-		String text_;
-};
-
-}
-#endif
-
-
diff --git a/Swiften/Roster/UnitTest/OfflineRosterFilterTest.cpp b/Swiften/Roster/UnitTest/OfflineRosterFilterTest.cpp
deleted file mode 100644
index e69de29..0000000
diff --git a/Swiften/Roster/UnitTest/RosterTest.cpp b/Swiften/Roster/UnitTest/RosterTest.cpp
deleted file mode 100644
index b43a41c..0000000
--- a/Swiften/Roster/UnitTest/RosterTest.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Roster/Roster.h"
-#include "Swiften/Roster/UnitTest/MockTreeWidget.h"
-#include "Swiften/Roster/UnitTest/MockTreeWidgetFactory.h"
-#include "Swiften/Roster/UnitTest/MockTreeWidgetItem.h"
-
-using namespace Swift;
-
-class RosterTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(RosterTest);
-		CPPUNIT_TEST(testGetGroup);
-		CPPUNIT_TEST_SUITE_END();
-
-	private:
-		Roster *roster_;
-		TreeWidget *widget_;
-		TreeWidgetFactory *factory_;
-		JID jid1_;
-		JID jid2_; 
-		JID jid3_;
-
-	public:
-
-		RosterTest() : jid1_(JID("a@b.c")), jid2_(JID("b@c.d")), jid3_(JID("c@d.e")) {}
-
-		void setUp() {
-			factory_ = new MockTreeWidgetFactory();
-			widget_ = factory_->createTreeWidget();
-			roster_ = new Roster(widget_, factory_);
-		}
-
-		void tearDown() {
-			delete roster_;
-			//delete widget_;
-			delete factory_;
-		}
-
-		void testGetGroup() {
-			roster_->addContact(jid1_, "Bert", "group1");
-			roster_->addContact(jid2_, "Ernie", "group2");
-			roster_->addContact(jid3_, "Cookie", "group1");
-
-			CPPUNIT_ASSERT_EQUAL(roster_->getGroup("group1"), roster_->getGroup("group1"));
-			CPPUNIT_ASSERT_EQUAL(roster_->getGroup("group2"), roster_->getGroup("group2"));
-			CPPUNIT_ASSERT_EQUAL(roster_->getGroup("group3"), roster_->getGroup("group3"));
-			CPPUNIT_ASSERT(roster_->getGroup("group1") != roster_->getGroup("group2"));
-			CPPUNIT_ASSERT(roster_->getGroup("group2") != roster_->getGroup("group3"));
-			CPPUNIT_ASSERT(roster_->getGroup("group3") != roster_->getGroup("group1"));
-		}
-
-};
-CPPUNIT_TEST_SUITE_REGISTRATION(RosterTest);
-
diff --git a/Swiften/Roster/UnitTest/XMPPRosterTest.cpp b/Swiften/Roster/UnitTest/XMPPRosterTest.cpp
deleted file mode 100644
index d03953e..0000000
--- a/Swiften/Roster/UnitTest/XMPPRosterTest.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <boost/shared_ptr.hpp>
-#include <boost/bind.hpp>
-
-#include <vector>
-
-#include "Swiften/Roster/XMPPRoster.h"
-
-
-using namespace Swift;
-
-enum XMPPRosterEvents {None, Add, Remove, Update};
-
-class XMPPRosterSignalHandler {
-public:
-	XMPPRosterSignalHandler(XMPPRoster* roster) {
-		lastEvent_ = None;
-		roster->onJIDAdded.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDAdded, this, _1));
-		roster->onJIDRemoved.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDRemoved, this, _1));
-		roster->onJIDUpdated.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDUpdated, this, _1, _2, _3));
-	}
-
-	XMPPRosterEvents getLastEvent() {
-		return lastEvent_;
-	}
-
-	JID getLastJID() {
-		return lastJID_;
-	}
-
-	String getLastOldName() {
-		return lastOldName_;
-	}
-
-	std::vector<String> getLastOldGroups() {
-		return lastOldGroups_;
-	}
-
-	void reset() {
-		lastEvent_ = None;
-	}
-
-private:
-	void handleJIDAdded(const JID& jid) {
-		lastJID_ = jid;
-		lastEvent_ = Add;
-	}
-
-	void handleJIDRemoved(const JID& jid) {
-		lastJID_ = jid;
-		lastEvent_ = Remove;
-	}
-
-	void handleJIDUpdated(const JID& jid, const String& oldName, const std::vector<String>& oldGroups) {
-		CPPUNIT_ASSERT_EQUAL(None, lastEvent_);
-		lastJID_ = jid;
-		lastOldName_ = oldName;
-		lastOldGroups_ = oldGroups;
-		lastEvent_ = Update;
-	}
-
-	XMPPRosterEvents lastEvent_;
-	JID lastJID_;
-	String lastOldName_;
-	std::vector<String> lastOldGroups_;
-
-};
-
-class XMPPRosterTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(XMPPRosterTest);
-		CPPUNIT_TEST(testJIDAdded);
-		CPPUNIT_TEST(testJIDRemoved);
-		CPPUNIT_TEST(testJIDUpdated);
-		CPPUNIT_TEST_SUITE_END();
-
-	private:
-		XMPPRoster* roster_;
-		XMPPRosterSignalHandler* handler_;
-		JID jid1_;
-		JID jid2_; 
-		JID jid3_;
-		std::vector<String> groups1_;
-		std::vector<String> groups2_;
-
-
-	public:
-
-		XMPPRosterTest() : jid1_(JID("a@b.c")), jid2_(JID("b@c.d")), jid3_(JID("c@d.e")) {}
-
-		void setUp() {
-			roster_ = new XMPPRoster();
-			handler_ = new XMPPRosterSignalHandler(roster_);
-			groups1_.push_back("bobs");
-			groups1_.push_back("berts");
-			groups2_.push_back("ernies");
-		}
-
-		void tearDown() {
-			delete roster_;
-		}
-
-		void testJIDAdded() {
-			roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both);
-			CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent());
-			CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID());
-			CPPUNIT_ASSERT_EQUAL(String("NewName"), roster_->getNameForJID(jid1_));
-			CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_));
-			handler_->reset();
-			roster_->addContact(jid2_, "NameTwo", groups1_, RosterItemPayload::Both);
-			CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent());
-			CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID());
-			CPPUNIT_ASSERT_EQUAL(String("NameTwo"), roster_->getNameForJID(jid2_));
-			CPPUNIT_ASSERT_EQUAL(String("NewName"), roster_->getNameForJID(jid1_));
-			CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid2_));
-			CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_));
-			handler_->reset();
-			roster_->addContact(jid3_, "NewName", groups2_, RosterItemPayload::Both);
-			CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent());
-			CPPUNIT_ASSERT_EQUAL(jid3_, handler_->getLastJID());
-			CPPUNIT_ASSERT_EQUAL(String("NewName"), roster_->getNameForJID(jid3_));
-			CPPUNIT_ASSERT(groups2_ == roster_->getGroupsForJID(jid3_));
-		}
-
-		void testJIDRemoved() {
-			roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both);
-			handler_->reset();
-			roster_->removeContact(jid1_);
-			CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent());
-			CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID());
-			handler_->reset();
-			roster_->addContact(jid1_, "NewName2", groups1_, RosterItemPayload::Both);
-			CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent());
-			CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID());
-			CPPUNIT_ASSERT_EQUAL(String("NewName2"), roster_->getNameForJID(jid1_));
-			roster_->addContact(jid2_, "NewName3", groups1_, RosterItemPayload::Both);
-			handler_->reset();
-			roster_->removeContact(jid2_);
-			CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent());
-			CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID());
-			handler_->reset();
-			roster_->removeContact(jid1_);
-			CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent());
-			CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID());
-		}
-
-		void testJIDUpdated() {
-			roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both);
-			CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent());
-			CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID());
-			CPPUNIT_ASSERT_EQUAL(String("NewName"), roster_->getNameForJID(jid1_));
-			CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_));
-			handler_->reset();
-			roster_->addContact(jid1_, "NameTwo", groups2_, RosterItemPayload::Both);
-			CPPUNIT_ASSERT_EQUAL(Update, handler_->getLastEvent());
-			CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID());
-			CPPUNIT_ASSERT_EQUAL(String("NameTwo"), roster_->getNameForJID(jid1_));
-			CPPUNIT_ASSERT(groups2_ == roster_->getGroupsForJID(jid1_));
-		}
-
-};
-CPPUNIT_TEST_SUITE_REGISTRATION(XMPPRosterTest);
-
diff --git a/Swiften/Roster/UserRosterAction.h b/Swiften/Roster/UserRosterAction.h
deleted file mode 100644
index 80ace68..0000000
--- a/Swiften/Roster/UserRosterAction.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef SWIFTEN_UserRosterAction_H
-#define SWIFTEN_UserRosterAction_H
-
-namespace Swift {
-class RosterItem;
-class TreeWidgetItem;
-
-class UserRosterAction {
-	public:
-		virtual ~UserRosterAction() {};
-		void setRosterItem(RosterItem *item) {
-			rosterItem_ = item;
-		};
-		void setTreeWidgetItem(TreeWidgetItem *item) {
-			treeWidgetItem_ = item;
-		}
-		RosterItem* getRosterItem() {
-			return rosterItem_;
-		}
-		TreeWidgetItem* getTreeWidgetItem() {
-			return treeWidgetItem_;
-		}
-
-	private:
-		RosterItem *rosterItem_;
-		TreeWidgetItem *treeWidgetItem_;
-};
-
-}
-#endif
-
-
diff --git a/Swiften/Roster/XMPPRoster.cpp b/Swiften/Roster/XMPPRoster.cpp
deleted file mode 100644
index 62edc45..0000000
--- a/Swiften/Roster/XMPPRoster.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-#include "Swiften/Roster/XMPPRoster.h"
-
-namespace Swift {
-
-void XMPPRoster::addContact(const JID& jid, const String& name, const std::vector<String>& groups, RosterItemPayload::Subscription subscription) {
-	JID bareJID(jid.toBare());
-	bool exists = containsJID(bareJID);
-	String oldName = getNameForJID(bareJID);
-	std::vector<String> oldGroups = entries_[bareJID].groups;
-	if (exists) {
-		entries_.erase(bareJID);
-	}
-	XMPPRosterItem item;
-	item.groups = groups;
-	item.name = name;
-	item.jid = jid;
-	item.subscription = subscription;
-	entries_[bareJID] = item;
-	if (exists) {
-		onJIDUpdated(bareJID, oldName, oldGroups);
-	} else {
-		onJIDAdded(bareJID);
-	}
-}
-
-void XMPPRoster::removeContact(const JID& jid) {
-	entries_.erase(JID(jid.toBare()));
-	onJIDRemoved(jid);
-}
-
-bool XMPPRoster::containsJID(const JID& jid) {
-	return entries_.find(JID(jid.toBare())) != entries_.end();
-}
-
-const String& XMPPRoster::getNameForJID(const JID& jid) {
-	return entries_[JID(jid.toBare())].name;
-}
-
-const std::vector<String>& XMPPRoster::getGroupsForJID(const JID& jid) {
-	return entries_[JID(jid.toBare())].groups;
-}
-
-RosterItemPayload::Subscription XMPPRoster::getSubscriptionStateForJID(const JID& jid) {
-	return entries_[JID(jid.toBare())].subscription;
-}
-
-}
-
diff --git a/Swiften/Roster/XMPPRoster.h b/Swiften/Roster/XMPPRoster.h
deleted file mode 100644
index 47326c3..0000000
--- a/Swiften/Roster/XMPPRoster.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef SWIFTEN_XMPPRoster_H
-#define SWIFTEN_XMPPRoster_H
-
-#include "Swiften/Base/String.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/Elements/RosterItemPayload.h"
-
-#include <map>
-#include <vector>
-#include <boost/signal.hpp>
-
-namespace Swift {
-
-struct XMPPRosterItem {
-	JID jid;
-	String name;
-	std::vector<String> groups;
-	RosterItemPayload::Subscription subscription;
-};
-
-class XMPPRoster {
-	public:
-		XMPPRoster() {};
-		~XMPPRoster() {};
-
-		void addContact(const JID& jid, const String& name, const std::vector<String>& groups, const RosterItemPayload::Subscription subscription);
-		bool containsJID(const JID& jid); 
-		void removeContact(const JID& jid);
-		RosterItemPayload::Subscription getSubscriptionStateForJID(const JID& jid);
-		const String& getNameForJID(const JID& jid);
-		const std::vector<String>& getGroupsForJID(const JID& jid);
-
-		boost::signal<void (const JID&)> onJIDAdded;
-		boost::signal<void (const JID&)> onJIDRemoved;
-		boost::signal<void (const JID&, const String&, const std::vector<String>&)> onJIDUpdated;
-
-	private:
-		//std::map<JID, std::pair<String, std::vector<String> > > entries_;
-		std::map<JID, XMPPRosterItem> entries_;
-};
-}
-
-#endif
-
diff --git a/Swiften/SASL/ClientAuthenticator.cpp b/Swiften/SASL/ClientAuthenticator.cpp
deleted file mode 100644
index 5fc9e85..0000000
--- a/Swiften/SASL/ClientAuthenticator.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "Swiften/SASL/ClientAuthenticator.h"
-
-namespace Swift {
-
-ClientAuthenticator::ClientAuthenticator(const String& name) : name(name) {
-}
-
-ClientAuthenticator::~ClientAuthenticator() {
-}
-
-}
diff --git a/Swiften/SASL/ClientAuthenticator.h b/Swiften/SASL/ClientAuthenticator.h
deleted file mode 100644
index f42a51e..0000000
--- a/Swiften/SASL/ClientAuthenticator.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class ClientAuthenticator {
-		public:
-			ClientAuthenticator(const String& name);
-			virtual ~ClientAuthenticator();
-
-			const String& getName() const {
-				return name;
-			}
-
-			void setCredentials(const String& authcid, const String& password, const String& authzid = String()) {
-				this->authcid = authcid;
-				this->password = password;
-				this->authzid = authzid;
-			}
-
-			virtual ByteArray getResponse() const = 0;
-			virtual bool setChallenge(const ByteArray&) = 0;
-
-			const String& getAuthenticationID() const {
-				return authcid;
-			}
-
-			const String& getAuthorizationID() const {
-				return authzid;
-			}
-
-			const String& getPassword() const {
-				return password;
-			}
-		
-		private:
-			String name;
-			String authcid;
-			String password;
-			String authzid;
-	};
-}
diff --git a/Swiften/SASL/PLAINClientAuthenticator.cpp b/Swiften/SASL/PLAINClientAuthenticator.cpp
deleted file mode 100644
index 8f88c3c..0000000
--- a/Swiften/SASL/PLAINClientAuthenticator.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "Swiften/SASL/PLAINClientAuthenticator.h"
-
-namespace Swift {
-
-PLAINClientAuthenticator::PLAINClientAuthenticator() : ClientAuthenticator("PLAIN") {
-}
-
-ByteArray PLAINClientAuthenticator::getResponse() const {
-	return ByteArray(getAuthorizationID()) + '\0' + ByteArray(getAuthenticationID()) + '\0' + ByteArray(getPassword());
-}
-
-bool PLAINClientAuthenticator::setChallenge(const ByteArray&) {
-	return true;
-}
-
-}
diff --git a/Swiften/SASL/PLAINClientAuthenticator.h b/Swiften/SASL/PLAINClientAuthenticator.h
deleted file mode 100644
index 854eb30..0000000
--- a/Swiften/SASL/PLAINClientAuthenticator.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include "Swiften/SASL/ClientAuthenticator.h"
-
-namespace Swift {
-	class PLAINClientAuthenticator : public ClientAuthenticator {
-		public:
-			PLAINClientAuthenticator();
-
-			virtual ByteArray getResponse() const;
-			virtual bool setChallenge(const ByteArray&);
-	};
-}
diff --git a/Swiften/SASL/PLAINMessage.cpp b/Swiften/SASL/PLAINMessage.cpp
deleted file mode 100644
index 66f8cd0..0000000
--- a/Swiften/SASL/PLAINMessage.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "Swiften/SASL/PLAINMessage.h"
-
-namespace Swift {
-
-PLAINMessage::PLAINMessage(const String& authcid, const String& password, const String& authzid) : authcid(authcid), authzid(authzid), password(password) {
-}
-
-PLAINMessage::PLAINMessage(const ByteArray& value) {
-	size_t i = 0;
-	while (i < value.getSize() && value[i] != '\0') {
-		authzid += value[i];
-		++i;
-	}
-	if (i == value.getSize()) {
-		return;
-	}
-	++i;
-	while (i < value.getSize() && value[i] != '\0') {
-		authcid += value[i];
-		++i;
-	}
-	if (i == value.getSize()) {
-		authcid = "";
-		return;
-	}
-	++i;
-	while (i < value.getSize()) {
-		password += value[i];
-		++i;
-	}
-}
-
-ByteArray PLAINMessage::getValue() const {
-	String s = authzid + '\0' + authcid + '\0' + password;
-	return ByteArray(s.getUTF8Data(), s.getUTF8Size());
-}
-
-}
diff --git a/Swiften/SASL/PLAINMessage.h b/Swiften/SASL/PLAINMessage.h
deleted file mode 100644
index dd5e2ee..0000000
--- a/Swiften/SASL/PLAINMessage.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// TODO: Get rid of this
-//
-#pragma once
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class PLAINMessage {
-		public:
-			PLAINMessage(const String& authcid, const String& password, const String& authzid = "");
-			PLAINMessage(const ByteArray& value);
-
-			ByteArray getValue() const;
-
-			const String& getAuthenticationID() const {
-				return authcid;
-			}
-
-			const String& getPassword() const {
-				return password;
-			}
-
-			const String& getAuthorizationID() const {
-				return authzid;
-			}
-
-		private:
-			String authcid;
-			String authzid;
-			String password;
-	};
-}
diff --git a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp
deleted file mode 100644
index 5dc924e..0000000
--- a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-#include "Swiften/SASL/SCRAMSHA1ClientAuthenticator.h"
-
-#include <cassert>
-#include <map>
-#include <boost/lexical_cast.hpp>
-
-#include "Swiften/StringCodecs/SHA1.h"
-#include "Swiften/StringCodecs/Base64.h"
-#include "Swiften/StringCodecs/HMACSHA1.h"
-#include "Swiften/StringCodecs/PBKDF2.h"
-#include "Swiften/StringPrep/StringPrep.h"
-
-namespace Swift {
-
-static String escape(const String& s) {
-	String result;
-	for (size_t i = 0; i < s.getUTF8Size(); ++i) {
-		if (s[i] == ',') {
-			result += "=2C";
-		}
-		else if (s[i] == '=') {
-			result += "=3D";
-		}
-		else {
-			result += s[i];
-		}
-	}
-	return result;
-}
-
-
-SCRAMSHA1ClientAuthenticator::SCRAMSHA1ClientAuthenticator(const String& nonce) : ClientAuthenticator("SCRAM-SHA-1"), step(Initial), clientnonce(nonce) {
-}
-
-ByteArray SCRAMSHA1ClientAuthenticator::getResponse() const {
-	if (step == Initial) {
-		return getGS2Header() + getInitialBareClientMessage();
-	}
-	else if (step == Proof) {
-		ByteArray clientKey = HMACSHA1::getResult(saltedPassword, "Client Key");
-		ByteArray storedKey = SHA1::getHash(clientKey);
-		ByteArray clientSignature = HMACSHA1::getResult(storedKey, authMessage);
-		ByteArray clientProof = clientKey;
-		for (unsigned int i = 0; i < clientProof.getSize(); ++i) {
-			clientProof[i] ^= clientSignature[i];
-		}
-		ByteArray result = ByteArray("c=") + Base64::encode(getGS2Header()) + ",r=" + clientnonce + serverNonce + ",p=" + Base64::encode(clientProof);
-		return result;
-	}
-	else {
-		return ByteArray();
-	}
-}
-
-bool SCRAMSHA1ClientAuthenticator::setChallenge(const ByteArray& challenge) {
-	if (step == Initial) {
-		initialServerMessage = challenge;
-
-		std::map<char, String> keys = parseMap(String(initialServerMessage.getData(), initialServerMessage.getSize()));
-
-		// Extract the salt
-		ByteArray salt = Base64::decode(keys['s']);
-
-		// Extract the server nonce
-		String clientServerNonce = keys['r'];
-		if (clientServerNonce.getUTF8Size() <= clientnonce.getUTF8Size()) {
-			return false;
-		}
-		String receivedClientNonce = clientServerNonce.getSubstring(0, clientnonce.getUTF8Size());
-		if (receivedClientNonce != clientnonce) {
-			return false;
-		}
-		serverNonce = clientServerNonce.getSubstring(clientnonce.getUTF8Size(), clientServerNonce.npos());
-
-		// Extract the number of iterations
-		int iterations = 0;
-		try {
-			iterations = boost::lexical_cast<int>(keys['i'].getUTF8String());
-		}
-		catch (const boost::bad_lexical_cast&) {
-			return false;
-		}
-		if (iterations <= 0) {
-			return false;
-		}
-
-		// Compute all the values needed for the server signature
-		saltedPassword = PBKDF2::encode(StringPrep::getPrepared(getPassword(), StringPrep::SASLPrep), salt, iterations);
-		authMessage = getInitialBareClientMessage() + "," + initialServerMessage + "," + "c=" + Base64::encode(getGS2Header()) + ",r=" + clientnonce + serverNonce;
-		ByteArray serverKey = HMACSHA1::getResult(saltedPassword, "Server Key");
-		serverSignature = HMACSHA1::getResult(serverKey, authMessage);
-
-		step = Proof;
-		return true;
-	}
-	else if (step == Proof) {
-		ByteArray result = ByteArray("v=") + ByteArray(Base64::encode(serverSignature));
-		step = Final;
-		return challenge == result;
-	}
-	else {
-		return true;
-	}
-}
-
-std::map<char, String> SCRAMSHA1ClientAuthenticator::parseMap(const String& s) {
-	std::map<char, String> result;
-	if (s.getUTF8Size() > 0) {
-		char key;
-		String value;
-		size_t i = 0;
-		bool expectKey = true;
-		while (i < s.getUTF8Size()) {
-			if (expectKey) {
-				key = s[i];
-				expectKey = false;
-				i++;
-			}
-			else if (s[i] == ',') {
-				result[key] = value;
-				value = "";
-				expectKey = true;
-			}
-			else {
-				value += s[i];
-			}
-			i++;
-		}
-		result[key] = value;
-	}
-	return result;
-}
-
-ByteArray SCRAMSHA1ClientAuthenticator::getInitialBareClientMessage() const {
-	String authenticationID = StringPrep::getPrepared(getAuthenticationID(), StringPrep::SASLPrep);
-	return ByteArray(String("n=" + escape(authenticationID) + ",r=" + clientnonce));
-}
-
-ByteArray SCRAMSHA1ClientAuthenticator::getGS2Header() const {
-	return ByteArray("n,") + (getAuthorizationID().isEmpty() ? "" : "a=" + escape(getAuthorizationID())) + ",";
-}
-
-}
diff --git a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.h b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.h
deleted file mode 100644
index 3d28014..0000000
--- a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#pragma once
-
-#include <map>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/SASL/ClientAuthenticator.h"
-
-namespace Swift {
-	class SCRAMSHA1ClientAuthenticator : public ClientAuthenticator {
-		public:
-			SCRAMSHA1ClientAuthenticator(const String& nonce);
-			
-			virtual ByteArray getResponse() const;
-			virtual bool setChallenge(const ByteArray&);
-
-		private:
-			ByteArray getInitialBareClientMessage() const;
-			ByteArray getGS2Header() const;
-
-			static std::map<char, String> parseMap(const String&);
-
-		private:
-			enum Step {
-				Initial,
-				Proof,
-        Final
-			} step;
-			String clientnonce;
-			ByteArray initialServerMessage;
-			ByteArray serverNonce;
-			ByteArray authMessage;
-			ByteArray saltedPassword;
-			ByteArray serverSignature;
-	};
-}
diff --git a/Swiften/SASL/SConscript b/Swiften/SASL/SConscript
deleted file mode 100644
index 22b242e..0000000
--- a/Swiften/SASL/SConscript
+++ /dev/null
@@ -1,12 +0,0 @@
-Import("swiften_env")
-
-myenv = swiften_env.Clone()
-myenv.MergeFlags(swiften_env["LIBIDN_FLAGS"])
-
-objects = myenv.StaticObject([
-		"ClientAuthenticator.cpp",
-		"PLAINClientAuthenticator.cpp",
-		"PLAINMessage.cpp",
-		"SCRAMSHA1ClientAuthenticator.cpp",
-	])
-swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/SASL/UnitTest/PLAINClientAuthenticatorTest.cpp b/Swiften/SASL/UnitTest/PLAINClientAuthenticatorTest.cpp
deleted file mode 100644
index e92cd34..0000000
--- a/Swiften/SASL/UnitTest/PLAINClientAuthenticatorTest.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/SASL/PLAINClientAuthenticator.h"
-
-using namespace Swift;
-
-class PLAINClientAuthenticatorTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(PLAINClientAuthenticatorTest);
-		CPPUNIT_TEST(testGetResponse_WithoutAuthzID);
-		CPPUNIT_TEST(testGetResponse_WithAuthzID);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testGetResponse_WithoutAuthzID() {
-			PLAINClientAuthenticator testling;
-
-			testling.setCredentials("user", "pass");
-
-			CPPUNIT_ASSERT_EQUAL(testling.getResponse(), ByteArray("\0user\0pass", 10));
-		}
-
-		void testGetResponse_WithAuthzID() {
-			PLAINClientAuthenticator testling;
-
-			testling.setCredentials("user", "pass", "authz");
-
-			CPPUNIT_ASSERT_EQUAL(testling.getResponse(), ByteArray("authz\0user\0pass", 15));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(PLAINClientAuthenticatorTest);
diff --git a/Swiften/SASL/UnitTest/PLAINMessageTest.cpp b/Swiften/SASL/UnitTest/PLAINMessageTest.cpp
deleted file mode 100644
index 6493bd5..0000000
--- a/Swiften/SASL/UnitTest/PLAINMessageTest.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/SASL/PLAINMessage.h"
-
-using namespace Swift;
-
-class PLAINMessageTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(PLAINMessageTest);
-		CPPUNIT_TEST(testGetValue_WithoutAuthzID);
-		CPPUNIT_TEST(testGetValue_WithAuthzID);
-		CPPUNIT_TEST(testConstructor_WithoutAuthzID);
-		CPPUNIT_TEST(testConstructor_WithAuthzID);
-		CPPUNIT_TEST(testConstructor_NoAuthcid);
-		CPPUNIT_TEST(testConstructor_NoPassword);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		PLAINMessageTest() {}
-
-		void testGetValue_WithoutAuthzID() {
-			PLAINMessage message("user", "pass");
-			CPPUNIT_ASSERT_EQUAL(message.getValue(), ByteArray("\0user\0pass", 10));
-		}
-
-		void testGetValue_WithAuthzID() {
-			PLAINMessage message("user", "pass", "authz");
-			CPPUNIT_ASSERT_EQUAL(message.getValue(), ByteArray("authz\0user\0pass", 15));
-		}
-
-		void testConstructor_WithoutAuthzID() {
-			PLAINMessage message(ByteArray("\0user\0pass", 10));
-
-			CPPUNIT_ASSERT_EQUAL(String(""), message.getAuthorizationID());
-			CPPUNIT_ASSERT_EQUAL(String("user"), message.getAuthenticationID());
-			CPPUNIT_ASSERT_EQUAL(String("pass"), message.getPassword());
-		}
-
-		void testConstructor_WithAuthzID() {
-			PLAINMessage message(ByteArray("authz\0user\0pass", 15));
-
-			CPPUNIT_ASSERT_EQUAL(String("authz"), message.getAuthorizationID());
-			CPPUNIT_ASSERT_EQUAL(String("user"), message.getAuthenticationID());
-			CPPUNIT_ASSERT_EQUAL(String("pass"), message.getPassword());
-		}
-
-		void testConstructor_NoAuthcid() {
-			PLAINMessage message(ByteArray("authzid", 7));
-
-			CPPUNIT_ASSERT_EQUAL(String(""), message.getAuthenticationID());
-		}
-
-		void testConstructor_NoPassword() {
-			PLAINMessage message(ByteArray("authzid\0authcid", 15));
-
-			CPPUNIT_ASSERT_EQUAL(String(""), message.getAuthenticationID());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(PLAINMessageTest);
diff --git a/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp b/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp
deleted file mode 100644
index db69d13..0000000
--- a/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/SASL/SCRAMSHA1ClientAuthenticator.h"
-#include "Swiften/Base/ByteArray.h"
-
-using namespace Swift;
-
-class SCRAMSHA1ClientAuthenticatorTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(SCRAMSHA1ClientAuthenticatorTest);
-		CPPUNIT_TEST(testGetInitialResponse);
-		CPPUNIT_TEST(testGetInitialResponse_UsernameHasSpecialChars);
-		CPPUNIT_TEST(testGetInitialResponse_WithAuthorizationID);
-		CPPUNIT_TEST(testGetInitialResponse_WithAuthorizationIDWithSpecialChars);
-		CPPUNIT_TEST(testGetFinalResponse);
-		CPPUNIT_TEST(testSetChallenge);
-		CPPUNIT_TEST(testSetChallenge_InvalidClientNonce);
-		CPPUNIT_TEST(testSetChallenge_OnlyClientNonce);
-		CPPUNIT_TEST(testSetChallenge_InvalidIterations);
-		CPPUNIT_TEST(testSetChallenge_ZeroIterations);
-		CPPUNIT_TEST(testSetChallenge_NegativeIterations);
-		CPPUNIT_TEST(testSetChallenge_MissingIterations);
-		CPPUNIT_TEST(testSetFinalChallenge);
-		CPPUNIT_TEST(testSetFinalChallenge_InvalidChallenge);
-		CPPUNIT_TEST(testGetResponseAfterFinalChallenge);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void setUp() {
-		}
-
-		void testGetInitialResponse() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefghABCDEFGH");
-			testling.setCredentials("user", "pass", "");
-
-			ByteArray response = testling.getResponse();
-
-			CPPUNIT_ASSERT_EQUAL(String("n,,n=user,r=abcdefghABCDEFGH"), testling.getResponse().toString());
-		}
-
-		void testGetInitialResponse_UsernameHasSpecialChars() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefghABCDEFGH");
-			testling.setCredentials(",us=,er=", "pass", "");
-
-			ByteArray response = testling.getResponse();
-
-			CPPUNIT_ASSERT_EQUAL(String("n,,n==2Cus=3D=2Cer=3D,r=abcdefghABCDEFGH"), testling.getResponse().toString());
-		}
-
-		void testGetInitialResponse_WithAuthorizationID() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefghABCDEFGH");
-			testling.setCredentials("user", "pass", "auth");
-
-			ByteArray response = testling.getResponse();
-
-			CPPUNIT_ASSERT_EQUAL(String("n,a=auth,n=user,r=abcdefghABCDEFGH"), testling.getResponse().toString());
-		}
-
-		void testGetInitialResponse_WithAuthorizationIDWithSpecialChars() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefghABCDEFGH");
-			testling.setCredentials("user", "pass", "a=u,th");
-
-			ByteArray response = testling.getResponse();
-
-			CPPUNIT_ASSERT_EQUAL(String("n,a=a=3Du=2Cth,n=user,r=abcdefghABCDEFGH"), testling.getResponse().toString());
-		}
-
-		void testGetFinalResponse() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
-			testling.setCredentials("user", "pass", "");
-			testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=4096"));
-
-			ByteArray response = testling.getResponse();
-
-			CPPUNIT_ASSERT_EQUAL(String("c=biws,r=abcdefghABCDEFGH,p=CZbjGDpIteIJwQNBgO0P8pKkMGY="), testling.getResponse().toString());
-		}
-
-		void testSetFinalChallenge() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
-			testling.setCredentials("user", "pass", "");
-			testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=4096"));
-
-			bool result = testling.setChallenge(ByteArray("v=Dd+Q20knZs9jeeK0pi1Mx1Se+yo="));
-
-			CPPUNIT_ASSERT(result);
-		}
-
-		void testSetChallenge() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
-			testling.setCredentials("user", "pass", "");
-
-			bool result = testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=4096"));
-
-			CPPUNIT_ASSERT(result);
-		}
-
-		void testSetChallenge_InvalidClientNonce() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
-			testling.setCredentials("user", "pass", "");
-
-			bool result = testling.setChallenge(ByteArray("r=abcdefgiABCDEFGH,s=MTIzNDU2NzgK,i=4096"));
-
-			CPPUNIT_ASSERT(!result);
-		}
-
-		void testSetChallenge_OnlyClientNonce() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
-			testling.setCredentials("user", "pass", "");
-
-			bool result = testling.setChallenge(ByteArray("r=abcdefgh,s=MTIzNDU2NzgK,i=4096"));
-
-			CPPUNIT_ASSERT(!result);
-		}
-
-		void testSetChallenge_InvalidIterations() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
-			testling.setCredentials("user", "pass", "");
-
-			bool result = testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=bla"));
-
-			CPPUNIT_ASSERT(!result);
-		}
-
-		void testSetChallenge_MissingIterations() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
-			testling.setCredentials("user", "pass", "");
-
-			bool result = testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK"));
-
-			CPPUNIT_ASSERT(!result);
-		}
-
-		void testSetChallenge_ZeroIterations() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
-			testling.setCredentials("user", "pass", "");
-
-			bool result = testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=0"));
-
-			CPPUNIT_ASSERT(!result);
-		}
-
-		void testSetChallenge_NegativeIterations() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
-			testling.setCredentials("user", "pass", "");
-
-			bool result = testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=-1"));
-
-			CPPUNIT_ASSERT(!result);
-		}
-
-		void testSetFinalChallenge_InvalidChallenge() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
-			testling.setCredentials("user", "pass", "");
-			testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=4096"));
-			bool result = testling.setChallenge(ByteArray("v=e26kI69ICb6zosapLLxrER/631A="));
-
-			CPPUNIT_ASSERT(!result);
-		}
-
-		void testGetResponseAfterFinalChallenge() {
-			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
-			testling.setCredentials("user", "pass", "");
-			testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=4096"));
-			testling.setChallenge(ByteArray("v=Dd+Q20knZs9jeeK0pi1Mx1Se+yo="));
-
-			ByteArray result = testling.getResponse();
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray(), result);
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(SCRAMSHA1ClientAuthenticatorTest);
diff --git a/Swiften/SConscript b/Swiften/SConscript
deleted file mode 100644
index e7a3329..0000000
--- a/Swiften/SConscript
+++ /dev/null
@@ -1,211 +0,0 @@
-Import("env")
-
-env["SWIFTEN_FLAGS"] = {
-		"LIBPATH": [Dir(".")],
-		"LIBS": ["Swiften"]
-	}
-
-swiften_env = env.Clone()
-swiften_env.MergeFlags(swiften_env["BOOST_FLAGS"])
-Export("swiften_env")
-
-# TODO: Move all this to a submodule SConscript
-myenv = swiften_env.Clone()
-myenv.MergeFlags(myenv["ZLIB_FLAGS"])
-myenv.MergeFlags(myenv["OPENSSL_FLAGS"])
-sources = [
-		"Avatars/AvatarFileStorage.cpp",
-		"Avatars/AvatarManager.cpp",
-		"Avatars/AvatarStorage.cpp",
-		"Chat/ChatStateTracker.cpp",
-		"Chat/ChatStateNotifier.cpp",
-		"Chat/ChatStateMessageSender.cpp",
-		"Client/Client.cpp",
-		"Client/ClientSession.cpp",
-		"Compress/ZLibCodecompressor.cpp",
-		"Disco/CapsInfoGenerator.cpp",
-		"Elements/DiscoInfo.cpp",
-		"Elements/Element.cpp",
-		"Elements/IQ.cpp",
-		"Elements/Payload.cpp",
-		"Elements/RosterPayload.cpp",
-		"Elements/Stanza.cpp",
-		"MUC/MUC.cpp",
-		"MUC/MUCOccupant.cpp",
-		"MUC/MUCRegistry.cpp",
-		"MUC/MUCBookmarkManager.cpp",
-		"Notifier/Notifier.cpp",
-		"Presence/PresenceOracle.cpp",
-		"Presence/PresenceSender.cpp",
-		"Queries/IQChannel.cpp",
-		"Queries/IQHandler.cpp",
-		"Queries/IQRouter.cpp",
-		"Queries/Request.cpp",
-		"Queries/Responders/DiscoInfoResponder.cpp",
-		"Queries/Responders/SoftwareVersionResponder.cpp",
-		"Roster/ContactRosterItem.cpp",
-		"Roster/Roster.cpp",
-		"Roster/XMPPRoster.cpp",
-		"Serializer/AuthRequestSerializer.cpp",
-		"Serializer/AuthSuccessSerializer.cpp",
-		"Serializer/AuthChallengeSerializer.cpp",
-		"Serializer/AuthResponseSerializer.cpp",
-		"Serializer/CompressRequestSerializer.cpp",
-		"Serializer/ElementSerializer.cpp",
-		"Serializer/MessageSerializer.cpp",
-		"Serializer/PayloadSerializer.cpp",
-		"Serializer/PayloadSerializerCollection.cpp",
-		"Serializer/PayloadSerializers/CapsInfoSerializer.cpp",
-		"Serializer/PayloadSerializers/ChatStateSerializer.cpp",
-		"Serializer/PayloadSerializers/DiscoInfoSerializer.cpp",
-		"Serializer/PayloadSerializers/ErrorSerializer.cpp",
-		"Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp",
-		"Serializer/PayloadSerializers/MUCPayloadSerializer.cpp",
-		"Serializer/PayloadSerializers/ResourceBindSerializer.cpp",
-		"Serializer/PayloadSerializers/RosterSerializer.cpp",
-		"Serializer/PayloadSerializers/SecurityLabelSerializer.cpp",
-		"Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.cpp",
-		"Serializer/PayloadSerializers/SoftwareVersionSerializer.cpp",
-		"Serializer/PayloadSerializers/VCardSerializer.cpp",
-		"Serializer/PayloadSerializers/VCardUpdateSerializer.cpp",
-		"Serializer/PayloadSerializers/StorageSerializer.cpp",
-		"Serializer/PayloadSerializers/PrivateStorageSerializer.cpp",
-		"Serializer/PresenceSerializer.cpp",
-		"Serializer/StanzaSerializer.cpp",
-		"Serializer/StreamFeaturesSerializer.cpp",
-		"Serializer/XML/XMLElement.cpp",
-		"Serializer/XML/XMLNode.cpp",
-		"Serializer/XMPPSerializer.cpp",
-		"Server/ServerFromClientSession.cpp",
-		"Server/ServerSession.cpp",
-		"Server/ServerStanzaRouter.cpp",
-		"Server/SimpleUserRegistry.cpp",
-		"Server/UserRegistry.cpp",
-		"Session/Session.cpp",
-		"Session/SessionStream.cpp",
-		"Session/BasicSessionStream.cpp",
-		"StringCodecs/Base64.cpp",
-		"StringCodecs/SHA1.cpp",
-		"StringCodecs/HMACSHA1.cpp",
-		"StringCodecs/MD5.cpp",
-		"StringCodecs/PBKDF2.cpp",
-		"StringCodecs/Hexify.cpp",
-	]
-# "Notifier/GrowlNotifier.cpp",
-
-if myenv.get("HAVE_OPENSSL", 0) :
-	sources += ["TLS/OpenSSL/OpenSSLContext.cpp"]
-
-SConscript(dirs = [
-		"Base",
-		"StringPrep",
-		"SASL",
-		"Application",
-		"EventLoop",
-		"Parser",
-		"JID",
-		"Network",
-		"History",
-		"StreamStack",
-		"LinkLocal",
-	])
-SConscript(test_only = True, dirs = [
-		"QA",
-  ])
-SConscript(dirs = [
-		"Examples"
-	])
-
-myenv.StaticLibrary("Swiften", sources + swiften_env["SWIFTEN_OBJECTS"])
-
-env.Append(UNITTEST_SOURCES = [
-		File("Application/UnitTest/ApplicationTest.cpp"),
-		File("Avatars/UnitTest/MockAvatarManager.cpp"),
-		File("Base/UnitTest/IDGeneratorTest.cpp"),
-		File("Base/UnitTest/StringTest.cpp"),
-		File("Base/UnitTest/ByteArrayTest.cpp"),
-		File("Chat/UnitTest/ChatStateNotifierTest.cpp"),
-#		File("Chat/UnitTest/ChatStateTrackerTest.cpp"),
-		File("Client/UnitTest/ClientSessionTest.cpp"),
-		File("Compress/UnitTest/ZLibCompressorTest.cpp"),
-		File("Compress/UnitTest/ZLibDecompressorTest.cpp"),
-		File("Disco/UnitTest/CapsInfoGeneratorTest.cpp"),
-		File("Elements/UnitTest/IQTest.cpp"),
-		File("Elements/UnitTest/StanzaTest.cpp"),
-		File("Elements/UnitTest/StanzasTest.cpp"),
-		File("EventLoop/UnitTest/EventLoopTest.cpp"),
-		File("EventLoop/UnitTest/SimpleEventLoopTest.cpp"),
-		File("History/UnitTest/SQLiteHistoryManagerTest.cpp"),
-		File("JID/UnitTest/JIDTest.cpp"),
-		File("LinkLocal/UnitTest/LinkLocalConnectorTest.cpp"),
-		File("LinkLocal/UnitTest/LinkLocalServiceBrowserTest.cpp"),
-		File("LinkLocal/UnitTest/LinkLocalServiceInfoTest.cpp"),
-		File("LinkLocal/UnitTest/LinkLocalServiceTest.cpp"),
-		File("Network/UnitTest/HostAddressTest.cpp"),
-		File("Network/UnitTest/ConnectorTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/BodyParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/DiscoInfoParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/ErrorParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/PriorityParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/RawXMLPayloadParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/ResourceBindParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/RosterParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/SecurityLabelParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/SecurityLabelsCatalogParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/SoftwareVersionParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/StatusParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/StatusShowParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/VCardParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/StorageParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/PrivateStorageParserTest.cpp"),
-		File("Parser/PayloadParsers/UnitTest/VCardUpdateParserTest.cpp"),
-		File("Parser/UnitTest/AttributeMapTest.cpp"),
-		File("Parser/UnitTest/IQParserTest.cpp"),
-		File("Parser/UnitTest/MessageParserTest.cpp"),
-		File("Parser/UnitTest/PayloadParserFactoryCollectionTest.cpp"),
-		File("Parser/UnitTest/PresenceParserTest.cpp"),
-		File("Parser/UnitTest/SerializingParserTest.cpp"),
-		File("Parser/UnitTest/StanzaParserTest.cpp"),
-		File("Parser/UnitTest/StreamFeaturesParserTest.cpp"),
-		File("Parser/UnitTest/XMLParserTest.cpp"),
-		File("Parser/UnitTest/XMPPParserTest.cpp"),
-		File("Presence/UnitTest/PresenceOracleTest.cpp"),
-		File("Presence/UnitTest/PresenceSenderTest.cpp"),
-		File("Queries/Requests/UnitTest/GetPrivateStorageRequestTest.cpp"),
-		File("Queries/Responders/UnitTest/DiscoInfoResponderTest.cpp"),
-		File("Queries/UnitTest/IQRouterTest.cpp"),
-		File("Queries/UnitTest/RequestTest.cpp"),
-		File("Queries/UnitTest/ResponderTest.cpp"),
-		File("Roster/UnitTest/OfflineRosterFilterTest.cpp"),
-		File("Roster/UnitTest/RosterTest.cpp"),
-		File("Roster/UnitTest/XMPPRosterTest.cpp"),
-		File("SASL/UnitTest/PLAINMessageTest.cpp"),
-		File("SASL/UnitTest/PLAINClientAuthenticatorTest.cpp"),
-		File("SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/CapsInfoSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/DiscoInfoSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/ErrorSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/PrioritySerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/ResourceBindSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/RosterSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/SecurityLabelSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/SecurityLabelsCatalogSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/SoftwareVersionSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/StatusSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/StatusShowSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/VCardUpdateSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/StorageSerializerTest.cpp"),
-		File("Serializer/PayloadSerializers/UnitTest/PrivateStorageSerializerTest.cpp"),
-		File("Serializer/UnitTest/StreamFeaturesSerializerTest.cpp"),
-		File("Serializer/XML/UnitTest/XMLElementTest.cpp"),
-		File("Server/UnitTest/ServerStanzaRouterTest.cpp"),
-		File("StreamStack/UnitTest/StreamStackTest.cpp"),
-		File("StreamStack/UnitTest/XMPPLayerTest.cpp"),
-		File("StringCodecs/UnitTest/Base64Test.cpp"),
-		File("StringCodecs/UnitTest/SHA1Test.cpp"),
-		File("StringCodecs/UnitTest/MD5Test.cpp"),
-		File("StringCodecs/UnitTest/HexifyTest.cpp"),
-		File("StringCodecs/UnitTest/HMACSHA1Test.cpp"),
-		File("StringCodecs/UnitTest/PBKDF2Test.cpp"),
-	])
diff --git a/Swiften/Serializer/AuthChallengeSerializer.cpp b/Swiften/Serializer/AuthChallengeSerializer.cpp
deleted file mode 100644
index 152607d..0000000
--- a/Swiften/Serializer/AuthChallengeSerializer.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "Swiften/Serializer/AuthChallengeSerializer.h"
-
-#include "Swiften/Elements/AuthChallenge.h"
-#include "Swiften/StringCodecs/Base64.h"
-
-namespace Swift {
-
-AuthChallengeSerializer::AuthChallengeSerializer() {
-}
-
-String AuthChallengeSerializer::serialize(boost::shared_ptr<Element> element)  const {
-	boost::shared_ptr<AuthChallenge> authRequest(boost::dynamic_pointer_cast<AuthChallenge>(element));
-	String value = (authRequest->getValue().isEmpty() ? "=" : Base64::encode(authRequest->getValue()));
-	return "<challenge xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + value + "</challenge>";
-}
-
-}
diff --git a/Swiften/Serializer/AuthChallengeSerializer.h b/Swiften/Serializer/AuthChallengeSerializer.h
deleted file mode 100644
index 010d9a9..0000000
--- a/Swiften/Serializer/AuthChallengeSerializer.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/AuthChallenge.h"
-#include "Swiften/Serializer/GenericElementSerializer.h"
-
-namespace Swift {
-	class AuthChallengeSerializer : public GenericElementSerializer<AuthChallenge> {
-		public:
-			AuthChallengeSerializer();
-
-			virtual String serialize(boost::shared_ptr<Element> element)  const;
-	};
-}
diff --git a/Swiften/Serializer/AuthFailureSerializer.h b/Swiften/Serializer/AuthFailureSerializer.h
deleted file mode 100644
index e7e2ced..0000000
--- a/Swiften/Serializer/AuthFailureSerializer.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_AuthFailureSerializer_H
-#define SWIFTEN_AuthFailureSerializer_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/AuthFailure.h"
-#include "Swiften/Serializer/GenericElementSerializer.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-	class AuthFailureSerializer : public GenericElementSerializer<AuthFailure> {
-		public:
-			AuthFailureSerializer() : GenericElementSerializer<AuthFailure>() {
-			}
-
-			virtual String serialize(boost::shared_ptr<Element>) const {
-				return XMLElement("failure", "urn:ietf:params:xml:ns:xmpp-sasl").serialize();
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/AuthRequestSerializer.cpp b/Swiften/Serializer/AuthRequestSerializer.cpp
deleted file mode 100644
index 7122485..0000000
--- a/Swiften/Serializer/AuthRequestSerializer.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "Swiften/Serializer/AuthRequestSerializer.h"
-
-#include "Swiften/Elements/AuthRequest.h"
-#include "Swiften/StringCodecs/Base64.h"
-
-namespace Swift {
-
-AuthRequestSerializer::AuthRequestSerializer() {
-}
-
-String AuthRequestSerializer::serialize(boost::shared_ptr<Element> element)  const {
-	boost::shared_ptr<AuthRequest> authRequest(boost::dynamic_pointer_cast<AuthRequest>(element));
-	String value = (authRequest->getMessage().isEmpty() ? "=" : Base64::encode(authRequest->getMessage()));
-	return "<auth xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\" mechanism=\"" + authRequest->getMechanism() + "\">" + value + "</auth>";
-}
-
-}
diff --git a/Swiften/Serializer/AuthRequestSerializer.h b/Swiften/Serializer/AuthRequestSerializer.h
deleted file mode 100644
index b5131a3..0000000
--- a/Swiften/Serializer/AuthRequestSerializer.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef SWIFTEN_AuthRequestSerializer_H
-#define SWIFTEN_AuthRequestSerializer_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/AuthRequest.h"
-#include "Swiften/Serializer/GenericElementSerializer.h"
-
-namespace Swift {
-	class AuthRequestSerializer : public GenericElementSerializer<AuthRequest> {
-		public:
-			AuthRequestSerializer();
-
-			virtual String serialize(boost::shared_ptr<Element> element)  const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/AuthResponseSerializer.cpp b/Swiften/Serializer/AuthResponseSerializer.cpp
deleted file mode 100644
index 2348a3d..0000000
--- a/Swiften/Serializer/AuthResponseSerializer.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "Swiften/Serializer/AuthResponseSerializer.h"
-
-#include "Swiften/Elements/AuthResponse.h"
-#include "Swiften/StringCodecs/Base64.h"
-
-namespace Swift {
-
-AuthResponseSerializer::AuthResponseSerializer() {
-}
-
-String AuthResponseSerializer::serialize(boost::shared_ptr<Element> element)  const {
-	boost::shared_ptr<AuthResponse> authRequest(boost::dynamic_pointer_cast<AuthResponse>(element));
-	String value = (authRequest->getValue().isEmpty() ? "=" : Base64::encode(authRequest->getValue()));
-	return "<response xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + value + "</response>";
-}
-
-}
diff --git a/Swiften/Serializer/AuthResponseSerializer.h b/Swiften/Serializer/AuthResponseSerializer.h
deleted file mode 100644
index 8d47291..0000000
--- a/Swiften/Serializer/AuthResponseSerializer.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/AuthResponse.h"
-#include "Swiften/Serializer/GenericElementSerializer.h"
-
-namespace Swift {
-	class AuthResponseSerializer : public GenericElementSerializer<AuthResponse> {
-		public:
-			AuthResponseSerializer();
-
-			virtual String serialize(boost::shared_ptr<Element> element)  const;
-	};
-}
diff --git a/Swiften/Serializer/AuthSuccessSerializer.cpp b/Swiften/Serializer/AuthSuccessSerializer.cpp
deleted file mode 100644
index 6d7f195..0000000
--- a/Swiften/Serializer/AuthSuccessSerializer.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "Swiften/Serializer/AuthSuccessSerializer.h"
-
-#include "Swiften/Elements/AuthSuccess.h"
-#include "Swiften/StringCodecs/Base64.h"
-
-namespace Swift {
-
-AuthSuccessSerializer::AuthSuccessSerializer() {
-}
-
-String AuthSuccessSerializer::serialize(boost::shared_ptr<Element> element)  const {
-	boost::shared_ptr<AuthSuccess> authRequest(boost::dynamic_pointer_cast<AuthSuccess>(element));
-	String value = (authRequest->getValue().isEmpty() ? "=" : Base64::encode(authRequest->getValue()));
-	return "<success xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + value + "</challenge>";
-}
-
-}
diff --git a/Swiften/Serializer/AuthSuccessSerializer.h b/Swiften/Serializer/AuthSuccessSerializer.h
deleted file mode 100644
index 6ced772..0000000
--- a/Swiften/Serializer/AuthSuccessSerializer.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/AuthSuccess.h"
-#include "Swiften/Serializer/GenericElementSerializer.h"
-
-namespace Swift {
-	class AuthSuccessSerializer : public GenericElementSerializer<AuthSuccess> {
-		public:
-			AuthSuccessSerializer();
-
-			virtual String serialize(boost::shared_ptr<Element> element)  const;
-	};
-}
diff --git a/Swiften/Serializer/CompressFailureSerializer.h b/Swiften/Serializer/CompressFailureSerializer.h
deleted file mode 100644
index c3e7953..0000000
--- a/Swiften/Serializer/CompressFailureSerializer.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_CompressFailureSerializer_H
-#define SWIFTEN_CompressFailureSerializer_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/CompressFailure.h"
-#include "Swiften/Serializer/GenericElementSerializer.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-	class CompressFailureSerializer : public GenericElementSerializer<CompressFailure> {
-		public:
-			CompressFailureSerializer() : GenericElementSerializer<CompressFailure>() {
-			}
-
-			virtual String serialize(boost::shared_ptr<Element>) const {
-				return XMLElement("failure", "http://jabber.org/protocol/compress").serialize();
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/CompressRequestSerializer.cpp b/Swiften/Serializer/CompressRequestSerializer.cpp
deleted file mode 100644
index 4d3310b..0000000
--- a/Swiften/Serializer/CompressRequestSerializer.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-#include "Swiften/Serializer/CompressRequestSerializer.h"
-
-#include "Swiften/Elements/CompressRequest.h"
-
-namespace Swift {
-
-CompressRequestSerializer::CompressRequestSerializer() {
-}
-
-String CompressRequestSerializer::serialize(boost::shared_ptr<Element> element)  const {
-	boost::shared_ptr<CompressRequest> compressRequest(boost::dynamic_pointer_cast<CompressRequest>(element));
-	return "<compress xmlns='http://jabber.org/protocol/compress'><method>" + compressRequest->getMethod() + "</method></compress>";
-}
-
-bool CompressRequestSerializer::canSerialize(boost::shared_ptr<Element> element) const {
-	return dynamic_cast<CompressRequest*>(element.get()) != 0;
-}
-
-}
diff --git a/Swiften/Serializer/CompressRequestSerializer.h b/Swiften/Serializer/CompressRequestSerializer.h
deleted file mode 100644
index b6a493c..0000000
--- a/Swiften/Serializer/CompressRequestSerializer.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef SWIFTEN_COMPRESSREQUESTSERIALIZER_H
-#define SWIFTEN_COMPRESSREQUESTSERIALIZER_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Serializer/ElementSerializer.h"
-
-namespace Swift {
-	class CompressRequestSerializer : public ElementSerializer {
-		public:
-			CompressRequestSerializer();
-
-			virtual String serialize(boost::shared_ptr<Element> element)  const;
-			virtual bool canSerialize(boost::shared_ptr<Element> element) const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/ElementSerializer.cpp b/Swiften/Serializer/ElementSerializer.cpp
deleted file mode 100644
index 22c64a6..0000000
--- a/Swiften/Serializer/ElementSerializer.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Serializer/ElementSerializer.h"
-
-namespace Swift {
-
-ElementSerializer::~ElementSerializer() {
-}
-
-}
diff --git a/Swiften/Serializer/ElementSerializer.h b/Swiften/Serializer/ElementSerializer.h
deleted file mode 100644
index d2f5611..0000000
--- a/Swiften/Serializer/ElementSerializer.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef SWIFTEN_ELEMENTSERIALIZER_H
-#define SWIFTEN_ELEMENTSERIALIZER_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Element.h"
-
-namespace Swift {
-	class ElementSerializer {
-		public:
-			virtual ~ElementSerializer();
-
-			virtual String serialize(boost::shared_ptr<Element> element) const = 0;
-			virtual bool canSerialize(boost::shared_ptr<Element> element) const = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/GenericElementSerializer.h b/Swiften/Serializer/GenericElementSerializer.h
deleted file mode 100644
index 7ccecb2..0000000
--- a/Swiften/Serializer/GenericElementSerializer.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef SWIFTEN_GenericElementSerializer_H
-#define SWIFTEN_GenericElementSerializer_H
-
-#include "Swiften/Serializer/ElementSerializer.h"
-
-namespace Swift {
-	template<typename T>
-	class GenericElementSerializer : public ElementSerializer {
-		public:
-			virtual String serialize(boost::shared_ptr<Element> element) const = 0;
-
-			virtual bool canSerialize(boost::shared_ptr<Element> element) const {
-				return dynamic_cast<T*>(element.get()) != 0;
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/GenericPayloadSerializer.h b/Swiften/Serializer/GenericPayloadSerializer.h
deleted file mode 100644
index c4a45c3..0000000
--- a/Swiften/Serializer/GenericPayloadSerializer.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef SWIFTEN_GenericPayloadSerializer_H
-#define SWIFTEN_GenericPayloadSerializer_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Serializer/PayloadSerializer.h"
-#include "Swiften/Elements/Body.h"
-
-namespace Swift {
-	template<typename PAYLOAD_TYPE>
-	class GenericPayloadSerializer : public PayloadSerializer {
-		public:
-			virtual String serialize(boost::shared_ptr<Payload> element)  const {
-				return serializePayload(boost::dynamic_pointer_cast<PAYLOAD_TYPE>(element));
-			}
-
-			virtual bool canSerialize(boost::shared_ptr<Payload> element) const {
-				return dynamic_cast<PAYLOAD_TYPE*>(element.get());
-			}
-
-			virtual String serializePayload(boost::shared_ptr<PAYLOAD_TYPE>) const = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/GenericStanzaSerializer.h b/Swiften/Serializer/GenericStanzaSerializer.h
deleted file mode 100644
index c59f735..0000000
--- a/Swiften/Serializer/GenericStanzaSerializer.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef SWIFTEN_GENERICSTANZASERIALIZER_H
-#define SWIFTEN_GENERICSTANZASERIALIZER_H
-
-#include "Swiften/Serializer/StanzaSerializer.h"
-
-namespace Swift {
-	template<typename STANZA_TYPE>
-	class GenericStanzaSerializer : public StanzaSerializer {
-		public:
-			GenericStanzaSerializer(const String& tag, PayloadSerializerCollection* payloadSerializers) : StanzaSerializer(tag, payloadSerializers) {}
-
-			virtual bool canSerialize(boost::shared_ptr<Element> element) const {
-				return dynamic_cast<STANZA_TYPE*>(element.get()) != 0;
-			}
-
-			virtual void setStanzaSpecificAttributes(
-					boost::shared_ptr<Element> stanza, 
-					XMLElement& element) const {
-				setStanzaSpecificAttributesGeneric(
-						boost::dynamic_pointer_cast<STANZA_TYPE>(stanza), element);
-			}
-
-			virtual void setStanzaSpecificAttributesGeneric(
-					boost::shared_ptr<STANZA_TYPE>, 
-					XMLElement&) const = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/IQSerializer.h b/Swiften/Serializer/IQSerializer.h
deleted file mode 100644
index 3623f24..0000000
--- a/Swiften/Serializer/IQSerializer.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef SWIFTEN_IQSerializer_H
-#define SWIFTEN_IQSerializer_H
-
-#include <cassert>
-
-#include "Swiften/Serializer/GenericStanzaSerializer.h"
-#include "Swiften/Elements/IQ.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-	class IQSerializer : public GenericStanzaSerializer<IQ> {
-		public:
-			IQSerializer(PayloadSerializerCollection* payloadSerializers) : 
-					GenericStanzaSerializer<IQ>("iq", payloadSerializers) {}
-
-		private:
-			virtual void setStanzaSpecificAttributesGeneric(
-					boost::shared_ptr<IQ> iq, 
-					XMLElement& element) const {
-				switch (iq->getType()) {
-					case IQ::Get: element.setAttribute("type","get"); break;
-					case IQ::Set: element.setAttribute("type","set"); break;
-					case IQ::Result: element.setAttribute("type","result"); break;
-					case IQ::Error: element.setAttribute("type","error"); break;
-				}
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/MessageSerializer.cpp b/Swiften/Serializer/MessageSerializer.cpp
deleted file mode 100644
index a3cf2ad..0000000
--- a/Swiften/Serializer/MessageSerializer.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "Swiften/Serializer/MessageSerializer.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-
-MessageSerializer::MessageSerializer(PayloadSerializerCollection* payloadSerializers) : 
-		GenericStanzaSerializer<Message>("message", payloadSerializers) {
-}
-
-void MessageSerializer::setStanzaSpecificAttributesGeneric(
-		boost::shared_ptr<Message> message, 
-		XMLElement& element) const {
-	if (message->getType() == Message::Chat) {
-		element.setAttribute("type", "chat");
-	}
-	else if (message->getType() == Message::Groupchat) {
-		element.setAttribute("type", "groupchat");
-	}
-	else if (message->getType() == Message::Headline) {
-		element.setAttribute("type", "headline");
-	}
-	else if (message->getType() == Message::Error) {
-		element.setAttribute("type", "error");
-	}
-}
-
-}
diff --git a/Swiften/Serializer/MessageSerializer.h b/Swiften/Serializer/MessageSerializer.h
deleted file mode 100644
index 8cb32c7..0000000
--- a/Swiften/Serializer/MessageSerializer.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef SWIFTEN_MessageSerializer_H
-#define SWIFTEN_MessageSerializer_H
-
-#include "Swiften/Serializer/GenericStanzaSerializer.h"
-#include "Swiften/Elements/Message.h"
-
-namespace Swift {
-	class XMLElement;
-
-	class MessageSerializer : public GenericStanzaSerializer<Message> {
-		public:
-			MessageSerializer(PayloadSerializerCollection* payloadSerializers);
-
-		private:
-			void setStanzaSpecificAttributesGeneric(
-					boost::shared_ptr<Message> message, 
-					XMLElement& element) const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializer.cpp b/Swiften/Serializer/PayloadSerializer.cpp
deleted file mode 100644
index 47295ac..0000000
--- a/Swiften/Serializer/PayloadSerializer.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializer.h"
-
-namespace Swift {
-
-PayloadSerializer::~PayloadSerializer() {
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializer.h b/Swiften/Serializer/PayloadSerializer.h
deleted file mode 100644
index 935ff4b..0000000
--- a/Swiften/Serializer/PayloadSerializer.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef SWIFTEN_PAYLOADSERIALIZER_H
-#define SWIFTEN_PAYLOADSERIALIZER_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class PayloadSerializer {
-		public:
-			virtual ~PayloadSerializer();
-
-			virtual bool canSerialize(boost::shared_ptr<Payload>) const = 0;
-			virtual String serialize(boost::shared_ptr<Payload>) const = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializerCollection.cpp b/Swiften/Serializer/PayloadSerializerCollection.cpp
deleted file mode 100644
index db86eea..0000000
--- a/Swiften/Serializer/PayloadSerializerCollection.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <boost/bind.hpp>
-#include <algorithm>
-
-#include "Swiften/Serializer/PayloadSerializerCollection.h"
-#include "Swiften/Serializer/PayloadSerializer.h"
-
-namespace Swift {
-
-PayloadSerializerCollection::PayloadSerializerCollection() {
-}
-
-void PayloadSerializerCollection::addSerializer(PayloadSerializer* serializer) {
-	serializers_.push_back(serializer);
-}
-
-void PayloadSerializerCollection::removeSerializer(PayloadSerializer* serializer) {
-	serializers_.erase(remove(serializers_.begin(), serializers_.end(), serializer), serializers_.end());
-}
-
-PayloadSerializer* PayloadSerializerCollection::getPayloadSerializer(boost::shared_ptr<Payload> payload) const {
-	std::vector<PayloadSerializer*>::const_iterator i = std::find_if(
-			serializers_.begin(), serializers_.end(), 
-			boost::bind(&PayloadSerializer::canSerialize, _1, payload));
-	return (i != serializers_.end() ? *i : NULL);
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializerCollection.h b/Swiften/Serializer/PayloadSerializerCollection.h
deleted file mode 100644
index 63ccabe..0000000
--- a/Swiften/Serializer/PayloadSerializerCollection.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-#include <vector>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/Payload.h"
-
-namespace Swift {
-	class PayloadSerializer;
-	class String;
-
-	class PayloadSerializerCollection {
-		public:
-			PayloadSerializerCollection();
-
-			void addSerializer(PayloadSerializer* factory);
-			void removeSerializer(PayloadSerializer* factory);
-			PayloadSerializer* getPayloadSerializer(boost::shared_ptr<Payload>) const;
-
-		private:
-			std::vector<PayloadSerializer*> serializers_;
-	};
-}
diff --git a/Swiften/Serializer/PayloadSerializers/BodySerializer.h b/Swiften/Serializer/PayloadSerializers/BodySerializer.h
deleted file mode 100644
index 7fba561..0000000
--- a/Swiften/Serializer/PayloadSerializers/BodySerializer.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef SWIFTEN_BodySerializer_H
-#define SWIFTEN_BodySerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-#include "Swiften/Elements/Body.h"
-
-namespace Swift {
-	class BodySerializer : public GenericPayloadSerializer<Body> {
-		public:
-			BodySerializer() : GenericPayloadSerializer<Body>() {}
-
-			virtual String serializePayload(boost::shared_ptr<Body> body)  const {
-				XMLTextNode textNode(body->getText());
-				return "<body>" + textNode.serialize() + "</body>";
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.cpp b/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.cpp
deleted file mode 100644
index fbb72af..0000000
--- a/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h"
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-
-CapsInfoSerializer::CapsInfoSerializer() : GenericPayloadSerializer<CapsInfo>() {
-}
-
-String CapsInfoSerializer::serializePayload(boost::shared_ptr<CapsInfo> capsInfo)  const {
-	XMLElement capsElement("c", "http://jabber.org/protocol/caps");
-	capsElement.setAttribute("node", capsInfo->getNode());
-	capsElement.setAttribute("hash", capsInfo->getHash());
-	capsElement.setAttribute("ver", capsInfo->getVersion());
-	return capsElement.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h b/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h
deleted file mode 100644
index cb4fa33..0000000
--- a/Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_CapsInfoSerializer_H
-#define SWIFTEN_CapsInfoSerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/CapsInfo.h"
-
-namespace Swift {
-	class CapsInfoSerializer : public GenericPayloadSerializer<CapsInfo> {
-		public:
-			CapsInfoSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<CapsInfo>)  const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.cpp b/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.cpp
deleted file mode 100644
index 0507092..0000000
--- a/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h"
-
-namespace Swift {
-
-ChatStateSerializer::ChatStateSerializer() : GenericPayloadSerializer<ChatState>() {
-}
-
-String ChatStateSerializer::serializePayload(boost::shared_ptr<ChatState> chatState)  const {
-	String result("<");
-	switch (chatState->getChatState()) {
-		case ChatState::Active: result += "active"; break;
-		case ChatState::Composing: result += "composing"; break;
-		case ChatState::Paused: result += "paused"; break;
-		case ChatState::Inactive: result += "inactive"; break;
-		case ChatState::Gone: result += "gone"; break;
-		default: result += "gone"; break;
-	}
-	result += " xmlns=\"http://jabber.org/protocol/chatstates\"/>";
-	return result;
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h b/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h
deleted file mode 100644
index e99b8b6..0000000
--- a/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/ChatState.h"
-
-namespace Swift {
-	class ChatStateSerializer : public GenericPayloadSerializer<ChatState> {
-		public:
-			ChatStateSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<ChatState> error)  const;
-	};
-}
diff --git a/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.cpp b/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.cpp
deleted file mode 100644
index 4c39574..0000000
--- a/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h"
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-
-DiscoInfoSerializer::DiscoInfoSerializer() : GenericPayloadSerializer<DiscoInfo>() {
-}
-
-String DiscoInfoSerializer::serializePayload(boost::shared_ptr<DiscoInfo> discoInfo)  const {
-	XMLElement queryElement("query", "http://jabber.org/protocol/disco#info");
-	if (!discoInfo->getNode().isEmpty()) {
-		queryElement.setAttribute("node", discoInfo->getNode());
-	}
-	foreach(const DiscoInfo::Identity& identity, discoInfo->getIdentities()) {
-		boost::shared_ptr<XMLElement> identityElement(new XMLElement("identity"));
-		if (!identity.getLanguage().isEmpty()) {
-			identityElement->setAttribute("xml:lang", identity.getLanguage());
-		}
-		identityElement->setAttribute("category", identity.getCategory());
-		identityElement->setAttribute("name", identity.getName());
-		identityElement->setAttribute("type", identity.getType());
-		queryElement.addNode(identityElement);
-	}
-	foreach(const String& feature, discoInfo->getFeatures()) {
-		boost::shared_ptr<XMLElement> featureElement(new XMLElement("feature"));
-		featureElement->setAttribute("var", feature);
-		queryElement.addNode(featureElement);
-	}
-	return queryElement.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h b/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h
deleted file mode 100644
index 929a455..0000000
--- a/Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_DiscoInfoSerializer_H
-#define SWIFTEN_DiscoInfoSerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/DiscoInfo.h"
-
-namespace Swift {
-	class DiscoInfoSerializer : public GenericPayloadSerializer<DiscoInfo> {
-		public:
-			DiscoInfoSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<DiscoInfo>)  const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp b/Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp
deleted file mode 100644
index f5ce478..0000000
--- a/Swiften/Serializer/PayloadSerializers/ErrorSerializer.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/ErrorSerializer.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-
-namespace Swift {
-
-ErrorSerializer::ErrorSerializer() : GenericPayloadSerializer<ErrorPayload>() {
-}
-
-String ErrorSerializer::serializePayload(boost::shared_ptr<ErrorPayload> error)  const {
-	String result("<error type=\"");
-	switch (error->getType()) {
-		case ErrorPayload::Continue: result += "continue"; break;
-		case ErrorPayload::Modify: result += "modify"; break;
-		case ErrorPayload::Auth: result += "auth"; break;
-		case ErrorPayload::Wait: result += "wait"; break;
-		default: result += "cancel"; break;
-	}
-	result += "\">";
-
-	String conditionElement;
-	switch (error->getCondition()) {
-		case ErrorPayload::BadRequest: conditionElement = "bad-request"; break;
-		case ErrorPayload::Conflict: conditionElement = "conflict"; break;
-		case ErrorPayload::FeatureNotImplemented: conditionElement = "feature-not-implemented"; break;
-		case ErrorPayload::Forbidden: conditionElement = "forbidden"; break;
-		case ErrorPayload::Gone: conditionElement = "gone"; break;
-		case ErrorPayload::InternalServerError: conditionElement = "internal-server-error"; break;
-		case ErrorPayload::ItemNotFound: conditionElement = "item-not-found"; break;
-		case ErrorPayload::JIDMalformed: conditionElement = "jid-malformed"; break;
-		case ErrorPayload::NotAcceptable: conditionElement = "not-acceptable"; break;
-		case ErrorPayload::NotAllowed: conditionElement = "not-allowed"; break;
-		case ErrorPayload::NotAuthorized: conditionElement = "not-authorized"; break;
-		case ErrorPayload::PaymentRequired: conditionElement = "payment-required"; break;
-		case ErrorPayload::RecipientUnavailable: conditionElement = "recipient-unavailable"; break;
-		case ErrorPayload::Redirect: conditionElement = "redirect"; break;
-		case ErrorPayload::RegistrationRequired: conditionElement = "registration-required"; break;
-		case ErrorPayload::RemoteServerNotFound: conditionElement = "remote-server-not-found"; break;
-		case ErrorPayload::RemoteServerTimeout: conditionElement = "remote-server-timeout"; break;
-		case ErrorPayload::ResourceConstraint: conditionElement = "resource-constraint"; break;
-		case ErrorPayload::ServiceUnavailable: conditionElement = "service-unavailable"; break;
-		case ErrorPayload::SubscriptionRequired: conditionElement = "subscription-required"; break;
-		case ErrorPayload::UnexpectedRequest: conditionElement = "unexpected-request"; break;
-		default: conditionElement = "undefined-condition"; break;
-	}
-	result += "<" + conditionElement + " xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>";
-
-	if (!error->getText().isEmpty()) {
-		XMLTextNode textNode(error->getText());
-		result += "<text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">" + textNode.serialize() + "</text>";
-	}
-
-	result += "</error>";
-	return result;
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/ErrorSerializer.h b/Swiften/Serializer/PayloadSerializers/ErrorSerializer.h
deleted file mode 100644
index 931596f..0000000
--- a/Swiften/Serializer/PayloadSerializers/ErrorSerializer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_ErrorSerializer_H
-#define SWIFTEN_ErrorSerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/ErrorPayload.h"
-
-namespace Swift {
-	class ErrorSerializer : public GenericPayloadSerializer<ErrorPayload> {
-		public:
-			ErrorSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<ErrorPayload> error)  const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp b/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp
deleted file mode 100644
index accf6c6..0000000
--- a/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h"
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Serializer/PayloadSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/BodySerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/PrioritySerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/ErrorSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/RosterSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/StatusSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/VCardSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/StorageSerializer.h"
-#include "Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h"
-
-namespace Swift {
-
-FullPayloadSerializerCollection::FullPayloadSerializerCollection() {
-	serializers_.push_back(new BodySerializer());
-	serializers_.push_back(new ChatStateSerializer());
-	serializers_.push_back(new PrioritySerializer());
-	serializers_.push_back(new ErrorSerializer());
-	serializers_.push_back(new RosterSerializer());
-	serializers_.push_back(new MUCPayloadSerializer());
-	serializers_.push_back(new SoftwareVersionSerializer());
-	serializers_.push_back(new StatusSerializer());
-	serializers_.push_back(new StatusShowSerializer());
-	serializers_.push_back(new DiscoInfoSerializer());
-	serializers_.push_back(new CapsInfoSerializer());
-	serializers_.push_back(new ResourceBindSerializer());
-	serializers_.push_back(new StartSessionSerializer());
-	serializers_.push_back(new SecurityLabelSerializer());
-	serializers_.push_back(new SecurityLabelsCatalogSerializer());
-	serializers_.push_back(new VCardSerializer());
-	serializers_.push_back(new VCardUpdateSerializer());
-	serializers_.push_back(new RawXMLPayloadSerializer());
-	serializers_.push_back(new StorageSerializer());
-	serializers_.push_back(new PrivateStorageSerializer(this));
-	foreach(PayloadSerializer* serializer, serializers_) {
-		addSerializer(serializer);
-	}
-}
-
-FullPayloadSerializerCollection::~FullPayloadSerializerCollection() {
-	foreach(PayloadSerializer* serializer, serializers_) {
-		removeSerializer(serializer);
-		delete serializer;
-	}
-	serializers_.clear();
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h b/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h
deleted file mode 100644
index e1655b5..0000000
--- a/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef SWIFTEN_FULLPAYLOADSERIALIZERCOLLECTION_H
-#define SWIFTEN_FULLPAYLOADSERIALIZERCOLLECTION_H
-
-#include <vector>
-
-#include "Swiften/Serializer/PayloadSerializerCollection.h"
-
-namespace Swift {
-	class FullPayloadSerializerCollection : public PayloadSerializerCollection {
-		public:
-			FullPayloadSerializerCollection();
-			~FullPayloadSerializerCollection();
-
-		private:
-			std::vector<PayloadSerializer*> serializers_;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.cpp b/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.cpp
deleted file mode 100644
index 9c701cc..0000000
--- a/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h"
-
-namespace Swift {
-
-MUCPayloadSerializer::MUCPayloadSerializer() : GenericPayloadSerializer<MUCPayload>() {
-}
-
-String MUCPayloadSerializer::serializePayload(boost::shared_ptr<MUCPayload>)  const {
-	String result("<x xmlns='http://jabber.org/protocol/muc'/>");
-	return result;
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h
deleted file mode 100644
index 504c969..0000000
--- a/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_MUCPayloadSerializer_H
-#define SWIFTEN_MUCPayloadSerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/MUCPayload.h"
-
-namespace Swift {
-	class MUCPayloadSerializer : public GenericPayloadSerializer<MUCPayload> {
-		public:
-			MUCPayloadSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<MUCPayload> version)  const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/PrioritySerializer.h b/Swiften/Serializer/PayloadSerializers/PrioritySerializer.h
deleted file mode 100644
index f132b6e..0000000
--- a/Swiften/Serializer/PayloadSerializers/PrioritySerializer.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef SWIFTEN_PrioritySerializer_H
-#define SWIFTEN_PrioritySerializer_H
-
-#include <boost/lexical_cast.hpp>
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/Priority.h"
-
-namespace Swift {
-	class PrioritySerializer : public GenericPayloadSerializer<Priority> {
-		public:
-			PrioritySerializer() : GenericPayloadSerializer<Priority>() {}
-
-			virtual String serializePayload(boost::shared_ptr<Priority> priority)  const {
-				return "<priority>" + boost::lexical_cast<std::string>(priority->getPriority()) + "</priority>";
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.cpp b/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.cpp
deleted file mode 100644
index 999252c..0000000
--- a/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h"
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-#include "Swiften/Serializer/XML/XMLRawTextNode.h"
-#include "Swiften/Serializer/PayloadSerializerCollection.h"
-
-namespace Swift {
-
-PrivateStorageSerializer::PrivateStorageSerializer(PayloadSerializerCollection* serializers) : serializers(serializers) {
-}
-
-String PrivateStorageSerializer::serializePayload(boost::shared_ptr<PrivateStorage> storage)	const {
-	XMLElement storageElement("query", "jabber:iq:private");
-	boost::shared_ptr<Payload> payload = storage->getPayload();
-	if (payload) {
-		PayloadSerializer* serializer = serializers->getPayloadSerializer(payload);
-		if (serializer) {
-			storageElement.addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(serializer->serialize(payload))));
-		}
-	}
-	return storageElement.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h b/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h
deleted file mode 100644
index c655634..0000000
--- a/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#pragma once
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/PrivateStorage.h"
-
-namespace Swift {
-	class PayloadSerializerCollection;
-
-	class PrivateStorageSerializer : public GenericPayloadSerializer<PrivateStorage> {
-		public:
-			PrivateStorageSerializer(PayloadSerializerCollection* serializers);
-
-			virtual String serializePayload(boost::shared_ptr<PrivateStorage>)  const;
-
-		private:
-			PayloadSerializerCollection* serializers;
-	};
-}
diff --git a/Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h
deleted file mode 100644
index f980174..0000000
--- a/Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/RawXMLPayload.h"
-
-namespace Swift {
-	class RawXMLPayloadSerializer : public GenericPayloadSerializer<RawXMLPayload> {
-		public:
-			RawXMLPayloadSerializer() : GenericPayloadSerializer<RawXMLPayload>() {}
-
-			virtual String serializePayload(boost::shared_ptr<RawXMLPayload> p)  const {
-				return p->getRawXML();
-			}
-	};
-}
diff --git a/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.cpp b/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.cpp
deleted file mode 100644
index 93ab136..0000000
--- a/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h"
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Serializer/XML/XMLElement.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-
-namespace Swift {
-
-ResourceBindSerializer::ResourceBindSerializer() : GenericPayloadSerializer<ResourceBind>() {
-}
-
-String ResourceBindSerializer::serializePayload(boost::shared_ptr<ResourceBind> resourceBind)  const {
-	XMLElement bindElement("bind", "urn:ietf:params:xml:ns:xmpp-bind");
-	if (resourceBind->getJID().isValid()) {
-		boost::shared_ptr<XMLElement> jidNode(new XMLElement("jid"));
-		jidNode->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(resourceBind->getJID().toString())));
-		bindElement.addNode(jidNode);
-	}
-	else if (!resourceBind->getResource().isEmpty()) {
-		boost::shared_ptr<XMLElement> resourceNode(new XMLElement("resource"));
-		resourceNode->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(resourceBind->getResource())));
-		bindElement.addNode(resourceNode);
-	}
-	return bindElement.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h b/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h
deleted file mode 100644
index 61cf539..0000000
--- a/Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_ResourceBindSerializer_H
-#define SWIFTEN_ResourceBindSerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/ResourceBind.h"
-
-namespace Swift {
-	class ResourceBindSerializer : public GenericPayloadSerializer<ResourceBind> {
-		public:
-			ResourceBindSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<ResourceBind>)  const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/RosterSerializer.cpp b/Swiften/Serializer/PayloadSerializers/RosterSerializer.cpp
deleted file mode 100644
index 6329f86..0000000
--- a/Swiften/Serializer/PayloadSerializers/RosterSerializer.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/RosterSerializer.h"
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-
-RosterSerializer::RosterSerializer() : GenericPayloadSerializer<RosterPayload>() {
-}
-
-String RosterSerializer::serializePayload(boost::shared_ptr<RosterPayload> roster)  const {
-	XMLElement queryElement("query", "jabber:iq:roster");
-	foreach(const RosterItemPayload& item, roster->getItems()) {
-		boost::shared_ptr<XMLElement> itemElement(new XMLElement("item"));
-		itemElement->setAttribute("jid", item.getJID());
-		itemElement->setAttribute("name", item.getName());
-
-		switch (item.getSubscription()) {
-			case RosterItemPayload::To: itemElement->setAttribute("subscription", "to"); break;
-			case RosterItemPayload::From: itemElement->setAttribute("subscription", "from"); break;
-			case RosterItemPayload::Both: itemElement->setAttribute("subscription", "both"); break;
-			case RosterItemPayload::Remove: itemElement->setAttribute("subscription", "remove"); break;
-			case RosterItemPayload::None: itemElement->setAttribute("subscription", "none"); break;
-		}
-
-		if (item.getSubscriptionRequested()) {
-			itemElement->setAttribute("ask", "subscribe");
-		}
-
-		foreach(const String& group, item.getGroups()) {
-			boost::shared_ptr<XMLElement> groupElement(new XMLElement("group"));
-			groupElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(group)));
-			itemElement->addNode(groupElement);
-		}
-
-		queryElement.addNode(itemElement);
-	}
-
-	return queryElement.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/RosterSerializer.h b/Swiften/Serializer/PayloadSerializers/RosterSerializer.h
deleted file mode 100644
index fb6a713..0000000
--- a/Swiften/Serializer/PayloadSerializers/RosterSerializer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_RosterSerializer_H
-#define SWIFTEN_RosterSerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/RosterPayload.h"
-
-namespace Swift {
-	class RosterSerializer : public GenericPayloadSerializer<RosterPayload> {
-		public:
-			RosterSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<RosterPayload>)  const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.cpp b/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.cpp
deleted file mode 100644
index dcce4dc..0000000
--- a/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h"
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Serializer/XML/XMLRawTextNode.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-
-SecurityLabelSerializer::SecurityLabelSerializer() : GenericPayloadSerializer<SecurityLabel>() {
-}
-
-String SecurityLabelSerializer::serializePayload(boost::shared_ptr<SecurityLabel> label)  const {
-	XMLElement element("securitylabel", "urn:xmpp:sec-label:0");
-	if (!label->getDisplayMarking().isEmpty()) {
-		boost::shared_ptr<XMLElement> displayMarking(new XMLElement("displaymarking"));
-		if (!label->getForegroundColor().isEmpty()) {
-			displayMarking->setAttribute("fgcolor", label->getForegroundColor());
-		}
-		if (!label->getBackgroundColor().isEmpty()) {
-			displayMarking->setAttribute("bgcolor", label->getBackgroundColor());
-		}
-		displayMarking->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(label->getDisplayMarking())));
-		element.addNode(displayMarking);
-	}
-
-	boost::shared_ptr<XMLElement> labelElement(new XMLElement("label"));
-	labelElement->addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(label->getLabel())));
-	element.addNode(labelElement);
-	
-	foreach(const String& equivalentLabel, label->getEquivalentLabels()) {
-		boost::shared_ptr<XMLElement> equivalentLabelElement(new XMLElement("equivalentlabel"));
-		equivalentLabelElement->addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(equivalentLabel)));
-		element.addNode(equivalentLabelElement);
-	}
-	return element.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h b/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h
deleted file mode 100644
index b0b0804..0000000
--- a/Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_SecurityLabelSerializer_H
-#define SWIFTEN_SecurityLabelSerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/SecurityLabel.h"
-
-namespace Swift {
-	class SecurityLabelSerializer : public GenericPayloadSerializer<SecurityLabel> {
-		public:
-			SecurityLabelSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<SecurityLabel> version)  const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.cpp b/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.cpp
deleted file mode 100644
index bc6a41f..0000000
--- a/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h"
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-#include "Swiften/Serializer/XML/XMLRawTextNode.h"
-#include "Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h"
-
-namespace Swift {
-
-SecurityLabelsCatalogSerializer::SecurityLabelsCatalogSerializer() : GenericPayloadSerializer<SecurityLabelsCatalog>() {
-}
-
-String SecurityLabelsCatalogSerializer::serializePayload(boost::shared_ptr<SecurityLabelsCatalog> catalog)  const {
-	XMLElement element("catalog", "urn:xmpp:sec-label:catalog:0");
-	if (!catalog->getName().isEmpty()) {
-		element.setAttribute("name", catalog->getName());
-	}
-	if (catalog->getTo().isValid()) {
-		element.setAttribute("to", catalog->getTo());
-	}
-	if (!catalog->getDescription().isEmpty()) {
-		element.setAttribute("desc", catalog->getDescription());
-	}
-	foreach (const SecurityLabel& label, catalog->getLabels()) {
-		String serializedLabel = SecurityLabelSerializer().serialize(boost::shared_ptr<SecurityLabel>(new SecurityLabel(label)));
-		element.addNode(boost::shared_ptr<XMLRawTextNode>(new XMLRawTextNode(serializedLabel)));
-	}
-	return element.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h b/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h
deleted file mode 100644
index d086c79..0000000
--- a/Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_SecurityLabelsCatalogSerializer_H
-#define SWIFTEN_SecurityLabelsCatalogSerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/SecurityLabelsCatalog.h"
-
-namespace Swift {
-	class SecurityLabelsCatalogSerializer : public GenericPayloadSerializer<SecurityLabelsCatalog> {
-		public:
-			SecurityLabelsCatalogSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<SecurityLabelsCatalog> version)  const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.cpp b/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.cpp
deleted file mode 100644
index 71ad9a2..0000000
--- a/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h"
-
-namespace Swift {
-
-SoftwareVersionSerializer::SoftwareVersionSerializer() : GenericPayloadSerializer<SoftwareVersion>() {
-}
-
-String SoftwareVersionSerializer::serializePayload(boost::shared_ptr<SoftwareVersion> version)  const {
-	String result("<query xmlns=\"jabber:iq:version\">");
-	if (!version->getName().isEmpty()) {
-		result += "<name>" + version->getName() + "</name>";
-	}
-	if (!version->getVersion().isEmpty()) {
-		result += "<version>" + version->getVersion() + "</version>";
-	}
-	if (!version->getOS().isEmpty()) {
-		result += "<os>" + version->getOS() + "</os>";
-	}
-	result += "</query>";
-	return result;
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h b/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h
deleted file mode 100644
index 50242f2..0000000
--- a/Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_SoftwareVersionSerializer_H
-#define SWIFTEN_SoftwareVersionSerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/SoftwareVersion.h"
-
-namespace Swift {
-	class SoftwareVersionSerializer : public GenericPayloadSerializer<SoftwareVersion> {
-		public:
-			SoftwareVersionSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<SoftwareVersion> version)  const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h b/Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h
deleted file mode 100644
index df35054..0000000
--- a/Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef SWIFTEN_StartSessionSerializer_H
-#define SWIFTEN_StartSessionSerializer_H
-
-#include <boost/lexical_cast.hpp>
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/StartSession.h"
-
-namespace Swift {
-	class StartSessionSerializer : public GenericPayloadSerializer<StartSession> {
-		public:
-			StartSessionSerializer() : GenericPayloadSerializer<StartSession>() {}
-
-			virtual String serializePayload(boost::shared_ptr<StartSession>)  const {
-				return XMLElement("session", "urn:ietf:params:xml:ns:xmpp-session").serialize();
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/StatusSerializer.h b/Swiften/Serializer/PayloadSerializers/StatusSerializer.h
deleted file mode 100644
index dc5f6d1..0000000
--- a/Swiften/Serializer/PayloadSerializers/StatusSerializer.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_StatusSerializer_H
-#define SWIFTEN_StatusSerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-#include "Swiften/Elements/Status.h"
-
-namespace Swift {
-	class StatusSerializer : public GenericPayloadSerializer<Status> {
-		public:
-			StatusSerializer() : GenericPayloadSerializer<Status>() {}
-
-			virtual String serializePayload(boost::shared_ptr<Status> status)  const {
-				XMLElement element("status");
-				element.addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(status->getText())));
-				return element.serialize();
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h b/Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h
deleted file mode 100644
index f66c09c..0000000
--- a/Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef SWIFTEN_StatusShowSerializer_H
-#define SWIFTEN_StatusShowSerializer_H
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/StatusShow.h"
-
-namespace Swift {
-	class StatusShowSerializer : public GenericPayloadSerializer<StatusShow> {
-		public:
-			StatusShowSerializer() : GenericPayloadSerializer<StatusShow>() {}
-
-			virtual String serializePayload(boost::shared_ptr<StatusShow> statusShow)  const {
-				if (statusShow->getType () == StatusShow::Online || statusShow->getType() == StatusShow::None) {
-					return "";
-				}
-				else {
-					String result("<show>");
-					switch (statusShow->getType()) {
-						case StatusShow::Away: result += "away"; break;
-						case StatusShow::XA: result += "xa"; break;
-						case StatusShow::FFC: result += "chat"; break;
-						case StatusShow::DND: result += "dnd"; break;
-						case StatusShow::Online: assert(false); break;
-						case StatusShow::None: assert(false); break;
-					}
-					result += "</show>";
-					return result;
-				}
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp b/Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp
deleted file mode 100644
index 4268381..0000000
--- a/Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/StorageSerializer.h"
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-
-namespace Swift {
-
-StorageSerializer::StorageSerializer() : GenericPayloadSerializer<Storage>() {
-}
-
-String StorageSerializer::serializePayload(boost::shared_ptr<Storage> storage)	const {
-	XMLElement storageElement("storage", "storage:bookmarks");
-	foreach(const Storage::Conference& conference, storage->getConferences()) {
-		boost::shared_ptr<XMLElement> conferenceElement(new XMLElement("conference"));
-		conferenceElement->setAttribute("name", conference.name);
-		conferenceElement->setAttribute("jid", conference.jid);
-		conferenceElement->setAttribute("autojoin", conference.autoJoin ? "1" : "0");
-		if (!conference.nick.isEmpty()) {
-			boost::shared_ptr<XMLElement> nickElement(new XMLElement("nick"));
-			nickElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(conference.nick)));
-			conferenceElement->addNode(nickElement);
-		}
-		if (!conference.password.isEmpty()) {
-			boost::shared_ptr<XMLElement> passwordElement(new XMLElement("password"));
-			passwordElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(conference.password)));
-			conferenceElement->addNode(passwordElement);
-		}
-		storageElement.addNode(conferenceElement);
-	}
-	return storageElement.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/StorageSerializer.h b/Swiften/Serializer/PayloadSerializers/StorageSerializer.h
deleted file mode 100644
index e657376..0000000
--- a/Swiften/Serializer/PayloadSerializers/StorageSerializer.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/Storage.h"
-
-namespace Swift {
-	class StorageSerializer : public GenericPayloadSerializer<Storage> {
-		public:
-			StorageSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<Storage>)  const;
-	};
-}
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/CapsInfoSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/CapsInfoSerializerTest.cpp
deleted file mode 100644
index 650a7ee..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/CapsInfoSerializerTest.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h"
-
-using namespace Swift;
-
-class CapsInfoSerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(CapsInfoSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		CapsInfoSerializerTest() {}
-
-		void testSerialize() {
-			CapsInfoSerializer testling;
-			boost::shared_ptr<CapsInfo> priority(new CapsInfo("http://swift.im", "myversion", "sha-1"));
-
-			CPPUNIT_ASSERT_EQUAL(String("<c hash=\"sha-1\" node=\"http://swift.im\" ver=\"myversion\" xmlns=\"http://jabber.org/protocol/caps\"/>"), testling.serialize(priority));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(CapsInfoSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/DiscoInfoSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/DiscoInfoSerializerTest.cpp
deleted file mode 100644
index d3e247f..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/DiscoInfoSerializerTest.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h"
-
-using namespace Swift;
-
-class DiscoInfoSerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(DiscoInfoSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		DiscoInfoSerializerTest() {}
-
-		void testSerialize() {
-			DiscoInfoSerializer testling;
-			boost::shared_ptr<DiscoInfo> discoInfo(new DiscoInfo());
-			discoInfo->addIdentity(DiscoInfo::Identity("Swift", "client", "pc"));
-			discoInfo->addIdentity(DiscoInfo::Identity("Vlug", "client", "pc", "nl"));
-			discoInfo->addFeature("http://jabber.org/protocol/caps");
-			discoInfo->addFeature("http://jabber.org/protocol/disco#info");
-			discoInfo->setNode("http://swift.im#bla");
-
-			String expectedResult = 
-				"<query node=\"http://swift.im#bla\" xmlns=\"http://jabber.org/protocol/disco#info\">"
-					"<identity category=\"client\" name=\"Swift\" type=\"pc\"/>"
-					"<identity category=\"client\" name=\"Vlug\" type=\"pc\" xml:lang=\"nl\"/>"
-					"<feature var=\"http://jabber.org/protocol/caps\"/>"
-					"<feature var=\"http://jabber.org/protocol/disco#info\"/>"
-				"</query>";
-
-			CPPUNIT_ASSERT_EQUAL(expectedResult, testling.serialize(discoInfo));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(DiscoInfoSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/ErrorSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/ErrorSerializerTest.cpp
deleted file mode 100644
index ecd904a..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/ErrorSerializerTest.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/ErrorSerializer.h"
-
-using namespace Swift;
-
-class ErrorSerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(ErrorSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		ErrorSerializerTest() {}
-
-		void testSerialize() {
-			ErrorSerializer testling;
-			boost::shared_ptr<ErrorPayload> error(new ErrorPayload(ErrorPayload::BadRequest, ErrorPayload::Cancel, "My Error"));
-
-			CPPUNIT_ASSERT_EQUAL(String("<error type=\"cancel\"><bad-request xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/><text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">My Error</text></error>"), testling.serialize(error));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ErrorSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.cpp
deleted file mode 100644
index 23ff4a0..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h"
-
-#include <cppunit/extensions/HelperMacros.h>
-
-#include "Swiften/Serializer/PayloadSerializer.h"
-
-namespace Swift {
-
-String PayloadsSerializer::serialize(boost::shared_ptr<Payload> payload) {
-	PayloadSerializer* serializer = serializers.getPayloadSerializer(payload);
-	if (serializer) {
-		return serializer->serialize(payload);
-	}
-	else {
-		CPPUNIT_ASSERT(false);
-		return "";
-	}
-}
-
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h b/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h
deleted file mode 100644
index 9fca334..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/Payload.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h"
-
-namespace Swift {
-	class PayloadsSerializer {
-		public:
-			String serialize(boost::shared_ptr<Payload> payload);
-
-		private:
-			FullPayloadSerializerCollection serializers;
-	};
-}
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/PrioritySerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/PrioritySerializerTest.cpp
deleted file mode 100644
index 5f6432b..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/PrioritySerializerTest.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/PrioritySerializer.h"
-
-using namespace Swift;
-
-class PrioritySerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(PrioritySerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		PrioritySerializerTest() {}
-
-		void testSerialize() {
-			PrioritySerializer testling;
-			boost::shared_ptr<Priority> priority(new Priority(-113));
-
-			CPPUNIT_ASSERT_EQUAL(String("<priority>-113</priority>"), testling.serialize(priority));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(PrioritySerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/PrivateStorageSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/PrivateStorageSerializerTest.cpp
deleted file mode 100644
index 7f0d5c9..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/PrivateStorageSerializerTest.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h"
-#include "Swiften/Elements/PrivateStorage.h"
-#include "Swiften/Elements/Storage.h"
-
-using namespace Swift;
-
-class PrivateStorageSerializerTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(PrivateStorageSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		PrivateStorageSerializerTest() {}
-
-		void testSerialize() {
-			PayloadsSerializer serializer;
-
-			boost::shared_ptr<PrivateStorage> privateStorage(new PrivateStorage());
-			boost::shared_ptr<Storage> storage(new Storage());
-			Storage::Conference conference;
-			conference.name = "Swift";
-			conference.jid = JID("swift@rooms.swift.im");
-			conference.nick = "Alice";
-			storage->addConference(conference);
-			privateStorage->setPayload(storage);
-
-			CPPUNIT_ASSERT_EQUAL(String(
-				"<query xmlns=\"jabber:iq:private\">"	
-					"<storage xmlns=\"storage:bookmarks\">"
-						"<conference "
-								"autojoin=\"0\" "
-								"jid=\"swift@rooms.swift.im\" "
-								"name=\"Swift\">"
-							"<nick>Alice</nick>"
-						"</conference>"
-					"</storage>"
-				"</query>"), serializer.serialize(privateStorage));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(PrivateStorageSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/ResourceBindSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/ResourceBindSerializerTest.cpp
deleted file mode 100644
index ff09966..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/ResourceBindSerializerTest.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h"
-
-using namespace Swift;
-
-class ResourceBindSerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(ResourceBindSerializerTest);
-		CPPUNIT_TEST(testSerialize_JID);
-		CPPUNIT_TEST(testSerialize_Resource);
-		CPPUNIT_TEST(testSerialize_Empty);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		ResourceBindSerializerTest() {}
-
-		void testSerialize_JID() {
-			ResourceBindSerializer testling;
-			boost::shared_ptr<ResourceBind> resourceBind(new ResourceBind());
-			resourceBind->setJID(JID("somenode@example.com/someresource"));
-
-			CPPUNIT_ASSERT_EQUAL(String(
-				"<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\">"
-					"<jid>somenode@example.com/someresource</jid>"
-				"</bind>"), testling.serialize(resourceBind));
-		}
-
-		void testSerialize_Resource() {
-			ResourceBindSerializer testling;
-			boost::shared_ptr<ResourceBind> resourceBind(new ResourceBind());
-			resourceBind->setResource("someresource");
-
-			CPPUNIT_ASSERT_EQUAL(String(
-				"<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\">"
-					"<resource>someresource</resource>"
-				"</bind>"), testling.serialize(resourceBind));
-		}
-
-		void testSerialize_Empty() {
-			ResourceBindSerializer testling;
-			boost::shared_ptr<ResourceBind> resourceBind(new ResourceBind());
-
-			CPPUNIT_ASSERT_EQUAL(String("<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\"/>"), testling.serialize(resourceBind));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ResourceBindSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/RosterSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/RosterSerializerTest.cpp
deleted file mode 100644
index 81fdc09..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/RosterSerializerTest.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/RosterSerializer.h"
-
-using namespace Swift;
-
-class RosterSerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(RosterSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		RosterSerializerTest() {}
-
-		void testSerialize() {
-			RosterSerializer testling;
-			boost::shared_ptr<RosterPayload> roster(new RosterPayload());
-
-			RosterItemPayload item1;
-			item1.setJID(JID("foo@bar.com"));
-			item1.setName("Foo @ Bar");
-			item1.setSubscription(RosterItemPayload::From);
-			item1.addGroup("Group 1");
-			item1.addGroup("Group 2");
-			item1.setSubscriptionRequested();
-			roster->addItem(item1);
-
-			RosterItemPayload item2;
-			item2.setJID(JID("baz@blo.com"));
-			item2.setName("Baz");
-			roster->addItem(item2);
-
-			String expectedResult = 
-				"<query xmlns=\"jabber:iq:roster\">"
-					"<item ask=\"subscribe\" jid=\"foo@bar.com\" name=\"Foo @ Bar\" subscription=\"from\">"
-						"<group>Group 1</group>"
-						"<group>Group 2</group>"
-					"</item>"
-					"<item jid=\"baz@blo.com\" name=\"Baz\" subscription=\"none\"/>"
-				"</query>";
-
-			CPPUNIT_ASSERT_EQUAL(expectedResult, testling.serialize(roster));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(RosterSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelSerializerTest.cpp
deleted file mode 100644
index e75695f..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelSerializerTest.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h"
-
-using namespace Swift;
-
-class SecurityLabelSerializerTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(SecurityLabelSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST(testSerialize_EmptyLabel);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testSerialize() {
-			SecurityLabelSerializer testling;
-			boost::shared_ptr<SecurityLabel> securityLabel(new SecurityLabel());
-			securityLabel->setDisplayMarking("SECRET");
-			securityLabel->setForegroundColor("black");
-			securityLabel->setBackgroundColor("red");
-			securityLabel->setLabel("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>");
-			securityLabel->addEquivalentLabel("<icismlabel xmlns=\"http://example.gov/IC-ISM/0\" classification=\"S\" ownerProducer=\"USA\" disseminationControls=\"FOUO\"/>");
-			securityLabel->addEquivalentLabel("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MRUCAgD9DA9BcXVhIChvYnNvbGV0ZSk=</esssecuritylabel>");
-
-			CPPUNIT_ASSERT_EQUAL(String(
-				"<securitylabel xmlns=\"urn:xmpp:sec-label:0\">"
-					"<displaymarking bgcolor=\"red\" fgcolor=\"black\">SECRET</displaymarking>"
-					"<label>"
-						"<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>"
-					"</label>"
-					"<equivalentlabel>"
-						"<icismlabel xmlns=\"http://example.gov/IC-ISM/0\" classification=\"S\" ownerProducer=\"USA\" disseminationControls=\"FOUO\"/>"
-					"</equivalentlabel>"
-					"<equivalentlabel>"
-						"<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MRUCAgD9DA9BcXVhIChvYnNvbGV0ZSk=</esssecuritylabel>"
-					"</equivalentlabel>"
-				"</securitylabel>"), testling.serialize(securityLabel));
-		}
-
-		void testSerialize_EmptyLabel() {
-			SecurityLabelSerializer testling;
-			boost::shared_ptr<SecurityLabel> securityLabel(new SecurityLabel());
-			securityLabel->setDisplayMarking("SECRET");
-			securityLabel->setLabel("");
-
-			CPPUNIT_ASSERT_EQUAL(String(
-				"<securitylabel xmlns=\"urn:xmpp:sec-label:0\">"
-					"<displaymarking>SECRET</displaymarking>"
-					"<label></label>"
-				"</securitylabel>"), testling.serialize(securityLabel));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(SecurityLabelSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelsCatalogSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelsCatalogSerializerTest.cpp
deleted file mode 100644
index 3055aca..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/SecurityLabelsCatalogSerializerTest.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h"
-
-using namespace Swift;
-
-class SecurityLabelsCatalogSerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(SecurityLabelsCatalogSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		SecurityLabelsCatalogSerializerTest() {}
-
-		void testSerialize() {
-			SecurityLabelsCatalogSerializer testling;
-			boost::shared_ptr<SecurityLabelsCatalog> catalog(new SecurityLabelsCatalog());
-			catalog->setTo(JID("example.com"));
-			catalog->setName("Default");
-			catalog->setDescription("an example set of labels");
-
-			SecurityLabel securityLabel1;
-			securityLabel1.setDisplayMarking("SECRET");
-			securityLabel1.setForegroundColor("black");
-			securityLabel1.setBackgroundColor("red");
-			securityLabel1.setLabel("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>");
-			catalog->addLabel(securityLabel1);
-
-			SecurityLabel securityLabel2;
-			securityLabel2.setDisplayMarking("CONFIDENTIAL");
-			securityLabel2.setForegroundColor("black");
-			securityLabel2.setBackgroundColor("navy");
-			securityLabel2.setLabel("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel>");
-			catalog->addLabel(securityLabel2);
-
-			CPPUNIT_ASSERT_EQUAL(String(
-				"<catalog desc=\"an example set of labels\" name=\"Default\" to=\"example.com\" xmlns=\"urn:xmpp:sec-label:catalog:0\">"
-					"<securitylabel xmlns=\"urn:xmpp:sec-label:0\">"
-						"<displaymarking bgcolor=\"red\" fgcolor=\"black\">SECRET</displaymarking>"
-						"<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel></label>"
-					"</securitylabel>"
-					"<securitylabel xmlns=\"urn:xmpp:sec-label:0\">"
-						"<displaymarking bgcolor=\"navy\" fgcolor=\"black\">CONFIDENTIAL</displaymarking>"
-						"<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel></label>"
-					"</securitylabel>"
-				"</catalog>"), testling.serialize(catalog));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(SecurityLabelsCatalogSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/SoftwareVersionSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/SoftwareVersionSerializerTest.cpp
deleted file mode 100644
index fd5dba5..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/SoftwareVersionSerializerTest.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h"
-
-using namespace Swift;
-
-class SoftwareVersionSerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(SoftwareVersionSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		SoftwareVersionSerializerTest() {}
-
-		void testSerialize() {
-			SoftwareVersionSerializer testling;
-			boost::shared_ptr<SoftwareVersion> softwareVersion(new SoftwareVersion("Swift", "0.1", "Mac OS X"));
-
-			CPPUNIT_ASSERT_EQUAL(String("<query xmlns=\"jabber:iq:version\"><name>Swift</name><version>0.1</version><os>Mac OS X</os></query>"), testling.serialize(softwareVersion));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(SoftwareVersionSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/StatusSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/StatusSerializerTest.cpp
deleted file mode 100644
index 6dedacd..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/StatusSerializerTest.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/StatusSerializer.h"
-
-using namespace Swift;
-
-class StatusSerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(StatusSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		StatusSerializerTest() {}
-
-		void testSerialize() {
-			StatusSerializer testling;
-			boost::shared_ptr<Status> status(new Status("I am away"));
-
-			CPPUNIT_ASSERT_EQUAL(String("<status>I am away</status>"), testling.serialize(status));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StatusSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/StatusShowSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/StatusShowSerializerTest.cpp
deleted file mode 100644
index 42e1c7c..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/StatusShowSerializerTest.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h"
-
-using namespace Swift;
-
-class StatusShowSerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(StatusShowSerializerTest);
-		CPPUNIT_TEST(testSerialize_Online);
-		CPPUNIT_TEST(testSerialize_Away);
-		CPPUNIT_TEST(testSerialize_FFC);
-		CPPUNIT_TEST(testSerialize_XA);
-		CPPUNIT_TEST(testSerialize_DND);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		StatusShowSerializerTest() {}
-
-		void testSerialize_Online() {
-			StatusShowSerializer testling;
-			boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::Online));
-			CPPUNIT_ASSERT_EQUAL(String(""), testling.serialize(statusShow));
-		}
-
-		void testSerialize_Away() {
-			StatusShowSerializer testling;
-			boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::Away));
-			CPPUNIT_ASSERT_EQUAL(String("<show>away</show>"), testling.serialize(statusShow));
-		}
-
-		void testSerialize_FFC() {
-			StatusShowSerializer testling;
-			boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::FFC));
-			CPPUNIT_ASSERT_EQUAL(String("<show>chat</show>"), testling.serialize(statusShow));
-		}
-
-		void testSerialize_XA() {
-			StatusShowSerializer testling;
-			boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::XA));
-			CPPUNIT_ASSERT_EQUAL(String("<show>xa</show>"), testling.serialize(statusShow));
-		}
-
-		void testSerialize_DND() {
-			StatusShowSerializer testling;
-			boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::DND));
-			CPPUNIT_ASSERT_EQUAL(String("<show>dnd</show>"), testling.serialize(statusShow));
-		}
-
-		void testSerialize_None() {
-			StatusShowSerializer testling;
-			boost::shared_ptr<StatusShow> statusShow(new StatusShow(StatusShow::None));
-			CPPUNIT_ASSERT_EQUAL(String(""), testling.serialize(statusShow));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StatusShowSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/StorageSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/StorageSerializerTest.cpp
deleted file mode 100644
index daf43c5..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/StorageSerializerTest.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.h"
-#include "Swiften/Elements/Storage.h"
-
-using namespace Swift;
-
-class StorageSerializerTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(StorageSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST(testSerialize_NoNickOrPassword);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		StorageSerializerTest() {}
-
-		void testSerialize() {
-			PayloadsSerializer serializer;
-			boost::shared_ptr<Storage> storage(new Storage());
-			Storage::Conference conference;
-			conference.name = "Council of Oberon";
-			conference.autoJoin = true;
-			conference.jid = JID("council@conference.underhill.org");
-			conference.nick = "Puck";
-			conference.password = "MyPass";
-			storage->addConference(conference);
-
-			CPPUNIT_ASSERT_EQUAL(String(
-				"<storage xmlns=\"storage:bookmarks\">"
-					"<conference "
-							"autojoin=\"1\" "
-							"jid=\"council@conference.underhill.org\" "
-							"name=\"Council of Oberon\">"
-						"<nick>Puck</nick>"
-						"<password>MyPass</password>"
-					"</conference>"
-				"</storage>"), serializer.serialize(storage));
-		}
-
-		void testSerialize_NoNickOrPassword() {
-			PayloadsSerializer serializer;
-			boost::shared_ptr<Storage> storage(new Storage());
-			Storage::Conference conference;
-			conference.name = "Council of Oberon";
-			conference.autoJoin = true;
-			conference.jid = JID("council@conference.underhill.org");
-			storage->addConference(conference);
-
-			CPPUNIT_ASSERT_EQUAL(String(
-				"<storage xmlns=\"storage:bookmarks\">"
-					"<conference "
-							"autojoin=\"1\" "
-							"jid=\"council@conference.underhill.org\" "
-							"name=\"Council of Oberon\"/>"
-				"</storage>"), serializer.serialize(storage));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StorageSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/VCardUpdateSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/VCardUpdateSerializerTest.cpp
deleted file mode 100644
index 23988d7..0000000
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/VCardUpdateSerializerTest.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h"
-
-using namespace Swift;
-
-class VCardUpdateSerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(VCardUpdateSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		VCardUpdateSerializerTest() {}
-
-		void testSerialize() {
-			VCardUpdateSerializer testling;
-			boost::shared_ptr<VCardUpdate> update(new VCardUpdate());
-			update->setPhotoHash("sha1-hash-of-image");
-
-			String expectedResult = 
-				"<x xmlns=\"vcard-temp:x:update\">"
-					"<photo>sha1-hash-of-image</photo>"
-				"</x>";
-
-			CPPUNIT_ASSERT_EQUAL(expectedResult, testling.serialize(update));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(VCardUpdateSerializerTest);
diff --git a/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp b/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp
deleted file mode 100644
index fbb0274..0000000
--- a/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/VCardSerializer.h"
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Serializer/XML/XMLElement.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-
-namespace Swift {
-
-VCardSerializer::VCardSerializer() : GenericPayloadSerializer<VCard>() {
-}
-
-String VCardSerializer::serializePayload(boost::shared_ptr<VCard> vcard)  const {
-	XMLElement queryElement("vCard", "vcard-temp");
-	if (!vcard->getFullName().isEmpty()) {
-		boost::shared_ptr<XMLElement> fullNameElement(new XMLElement("FN"));
-		fullNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getFullName())));
-		queryElement.addNode(fullNameElement);
-	}
-	if (!vcard->getGivenName().isEmpty() || !vcard->getFamilyName().isEmpty()) {
-		boost::shared_ptr<XMLElement> nameElement(new XMLElement("N"));
-		if (!vcard->getFamilyName().isEmpty()) {
-			boost::shared_ptr<XMLElement> familyNameElement(new XMLElement("FAMILY"));
-			familyNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getFamilyName())));
-			nameElement->addNode(familyNameElement);
-		}
-		if (!vcard->getGivenName().isEmpty()) {
-			boost::shared_ptr<XMLElement> givenNameElement(new XMLElement("GIVEN"));
-			givenNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getGivenName())));
-			nameElement->addNode(givenNameElement);
-		}
-		queryElement.addNode(nameElement);
-	}
-	if (!vcard->getEMail().isEmpty()) {
-		boost::shared_ptr<XMLElement> emailElement(new XMLElement("EMAIL"));
-		boost::shared_ptr<XMLElement> userIDElement(new XMLElement("USERID"));
-		userIDElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getEMail())));
-		emailElement->addNode(userIDElement);
-		queryElement.addNode(emailElement);
-	}
-	if (!vcard->getNickname().isEmpty()) {
-		boost::shared_ptr<XMLElement> nickElement(new XMLElement("NICKNAME"));
-		nickElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getNickname())));
-		queryElement.addNode(nickElement);
-	}
-	// TODO
-	return queryElement.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/VCardSerializer.h b/Swiften/Serializer/PayloadSerializers/VCardSerializer.h
deleted file mode 100644
index baf5947..0000000
--- a/Swiften/Serializer/PayloadSerializers/VCardSerializer.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/VCard.h"
-
-namespace Swift {
-	class VCardSerializer : public GenericPayloadSerializer<VCard> {
-		public:
-			VCardSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<VCard>)  const;
-	};
-}
diff --git a/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.cpp b/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.cpp
deleted file mode 100644
index 540b48d..0000000
--- a/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h"
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Serializer/XML/XMLElement.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-
-namespace Swift {
-
-VCardUpdateSerializer::VCardUpdateSerializer() : GenericPayloadSerializer<VCardUpdate>() {
-}
-
-String VCardUpdateSerializer::serializePayload(boost::shared_ptr<VCardUpdate> vcardUpdate)	const {
-	XMLElement updateElement("x", "vcard-temp:x:update");
-	boost::shared_ptr<XMLElement> photoElement(new XMLElement("photo"));
-	photoElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcardUpdate->getPhotoHash())));
-	updateElement.addNode(photoElement);
-	return updateElement.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h b/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h
deleted file mode 100644
index e1373a9..0000000
--- a/Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include "Swiften/Serializer/GenericPayloadSerializer.h"
-#include "Swiften/Elements/VCardUpdate.h"
-
-namespace Swift {
-	class VCardUpdateSerializer : public GenericPayloadSerializer<VCardUpdate> {
-		public:
-			VCardUpdateSerializer();
-
-			virtual String serializePayload(boost::shared_ptr<VCardUpdate>)  const;
-	};
-}
diff --git a/Swiften/Serializer/PresenceSerializer.cpp b/Swiften/Serializer/PresenceSerializer.cpp
deleted file mode 100644
index f7585d5..0000000
--- a/Swiften/Serializer/PresenceSerializer.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "Swiften/Serializer/PresenceSerializer.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-#include "boost/shared_ptr.hpp"
-
-namespace Swift {
-
-PresenceSerializer::PresenceSerializer(PayloadSerializerCollection* payloadSerializers) : 
-		GenericStanzaSerializer<Presence>("presence", payloadSerializers) {
-}
-
-void PresenceSerializer::setStanzaSpecificAttributesGeneric(
-		boost::shared_ptr<Presence> presence, 
-		XMLElement& element) const {
-	switch (presence->getType()) {
-		case Presence::Unavailable: element.setAttribute("type","unavailable"); break;
-		case Presence::Probe: element.setAttribute("type","probe"); break;
-		case Presence::Subscribe: element.setAttribute("type","subscribe"); break;
-		case Presence::Subscribed: element.setAttribute("type","subscribed"); break;
-		case Presence::Unsubscribe: element.setAttribute("type","unsubscribe"); break;
-		case Presence::Unsubscribed: element.setAttribute("type","unsubscribed"); break;
-		case Presence::Error: element.setAttribute("type","error"); break;
-		case Presence::Available: break;
-	}
-}
-
-}
diff --git a/Swiften/Serializer/PresenceSerializer.h b/Swiften/Serializer/PresenceSerializer.h
deleted file mode 100644
index 158d4f2..0000000
--- a/Swiften/Serializer/PresenceSerializer.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef SWIFTEN_PresenceSerializer_H
-#define SWIFTEN_PresenceSerializer_H
-
-#include <cassert>
-
-#include "Swiften/Serializer/GenericStanzaSerializer.h"
-#include "Swiften/Elements/Presence.h"
-
-namespace Swift {
-	class PresenceSerializer : public GenericStanzaSerializer<Presence> {
-		public:
-			PresenceSerializer(PayloadSerializerCollection* payloadSerializers);
-
-		private:
-			virtual void setStanzaSpecificAttributesGeneric(
-					boost::shared_ptr<Presence> presence, 
-					XMLElement& element) const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/StanzaSerializer.cpp b/Swiften/Serializer/StanzaSerializer.cpp
deleted file mode 100644
index d940634..0000000
--- a/Swiften/Serializer/StanzaSerializer.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "Swiften/Serializer/StanzaSerializer.h"
-
-#include <sstream>
-#include <typeinfo>
-#include <iostream>
-
-#include "Swiften/Serializer/XML/XMLElement.h"
-#include "Swiften/Serializer/XML/XMLRawTextNode.h"
-#include "Swiften/Serializer/PayloadSerializer.h"
-#include "Swiften/Serializer/PayloadSerializerCollection.h"
-#include "Swiften/Elements/Stanza.h"
-
-namespace Swift {
-
-StanzaSerializer::StanzaSerializer(const String& tag, PayloadSerializerCollection* payloadSerializers) : tag_(tag), payloadSerializers_(payloadSerializers) {
-}
-
-String StanzaSerializer::serialize(boost::shared_ptr<Element> element) const {
-	boost::shared_ptr<Stanza> stanza(boost::dynamic_pointer_cast<Stanza>(element));
-
-	XMLElement stanzaElement(tag_);
-	if (stanza->getFrom().isValid()) {
-		stanzaElement.setAttribute("from", stanza->getFrom());
-	}
-	if (stanza->getTo().isValid()) {
-		stanzaElement.setAttribute("to", stanza->getTo());
-	}
-	if (!stanza->getID().isEmpty()) {
-		stanzaElement.setAttribute("id", stanza->getID());
-	}
-	setStanzaSpecificAttributes(stanza, stanzaElement);
-
-	String serializedPayloads;
-	foreach (const boost::shared_ptr<Payload>& payload, stanza->getPayloads()) {
-		PayloadSerializer* serializer = payloadSerializers_->getPayloadSerializer(payload);
-		if (serializer) {
-			serializedPayloads += serializer->serialize(payload);
-		}
-		else {
-			std::cerr << "Could not find serializer for " << typeid(*(payload.get())).name() << std::endl;
-		}
-	}
-	if (!serializedPayloads.isEmpty()) {
-		stanzaElement.addNode(boost::shared_ptr<XMLNode>(new XMLRawTextNode(serializedPayloads)));
-	}
-
-	return stanzaElement.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/StanzaSerializer.h b/Swiften/Serializer/StanzaSerializer.h
deleted file mode 100644
index 0f7abaf..0000000
--- a/Swiften/Serializer/StanzaSerializer.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef SWIFTEN_STANZASERIALIZER_H
-#define SWIFTEN_STANZASERIALIZER_H
-
-#include "Swiften/Elements/Stanza.h"
-#include "Swiften/Serializer/ElementSerializer.h"
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class PayloadSerializerCollection;
-	class XMLElement;
-
-	class StanzaSerializer : public ElementSerializer {
-		public:
-			StanzaSerializer(const String& tag, PayloadSerializerCollection* payloadSerializers);
-
-			virtual String serialize(boost::shared_ptr<Element>) const;
-			virtual void setStanzaSpecificAttributes(boost::shared_ptr<Element>, XMLElement&) const = 0;
-
-		private:
-			String tag_;
-			PayloadSerializerCollection* payloadSerializers_;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/StartTLSFailureSerializer.h b/Swiften/Serializer/StartTLSFailureSerializer.h
deleted file mode 100644
index 472fea0..0000000
--- a/Swiften/Serializer/StartTLSFailureSerializer.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_StartTLSFailureSerializer_H
-#define SWIFTEN_StartTLSFailureSerializer_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/StartTLSFailure.h"
-#include "Swiften/Serializer/GenericElementSerializer.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-	class StartTLSFailureSerializer : public GenericElementSerializer<StartTLSFailure> {
-		public:
-			StartTLSFailureSerializer() : GenericElementSerializer<StartTLSFailure>() {
-			}
-
-			virtual String serialize(boost::shared_ptr<Element>) const {
-				return XMLElement("failure", "urn:ietf:params:xml:ns:xmpp-tls").serialize();
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/StartTLSRequestSerializer.h b/Swiften/Serializer/StartTLSRequestSerializer.h
deleted file mode 100644
index fa85fe2..0000000
--- a/Swiften/Serializer/StartTLSRequestSerializer.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_StartTLSRequestSerializer_H
-#define SWIFTEN_StartTLSRequestSerializer_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/StartTLSRequest.h"
-#include "Swiften/Serializer/GenericElementSerializer.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-	class StartTLSRequestSerializer : public GenericElementSerializer<StartTLSRequest> {
-		public:
-			StartTLSRequestSerializer() : GenericElementSerializer<StartTLSRequest>() {
-			}
-
-			virtual String serialize(boost::shared_ptr<Element>) const {
-				return XMLElement("starttls", "urn:ietf:params:xml:ns:xmpp-tls").serialize();
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/StreamFeaturesSerializer.cpp b/Swiften/Serializer/StreamFeaturesSerializer.cpp
deleted file mode 100644
index 49e62c4..0000000
--- a/Swiften/Serializer/StreamFeaturesSerializer.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "Swiften/Serializer/StreamFeaturesSerializer.h"
-
-#include "Swiften/Serializer/XML/XMLElement.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-#include "Swiften/Base/foreach.h"
-
-namespace Swift {
-
-StreamFeaturesSerializer::StreamFeaturesSerializer() {
-}
-
-String StreamFeaturesSerializer::serialize(boost::shared_ptr<Element> element)  const {
-	boost::shared_ptr<StreamFeatures> streamFeatures(boost::dynamic_pointer_cast<StreamFeatures>(element));
-
-	XMLElement streamFeaturesElement("stream:features");
-	if (streamFeatures->hasStartTLS()) {
-		streamFeaturesElement.addNode(boost::shared_ptr<XMLElement>(new XMLElement("starttls", "urn:ietf:params:xml:ns:xmpp-tls")));
-	}
-	if (!streamFeatures->getCompressionMethods().empty()) {
-		boost::shared_ptr<XMLElement> compressionElement(new XMLElement("compression", "http://jabber.org/features/compress"));
-		foreach(const String& method, streamFeatures->getCompressionMethods()) {
-			boost::shared_ptr<XMLElement> methodElement(new XMLElement("method"));
-			methodElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(method)));
-			compressionElement->addNode(methodElement);
-		}
-		streamFeaturesElement.addNode(compressionElement);
-	}
-	if (!streamFeatures->getAuthenticationMechanisms().empty()) {
-		boost::shared_ptr<XMLElement> mechanismsElement(new XMLElement("mechanisms", "urn:ietf:params:xml:ns:xmpp-sasl"));
-		foreach(const String& mechanism, streamFeatures->getAuthenticationMechanisms()) {
-			boost::shared_ptr<XMLElement> mechanismElement(new XMLElement("mechanism"));
-			mechanismElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(mechanism)));
-			mechanismsElement->addNode(mechanismElement);
-		}
-		streamFeaturesElement.addNode(mechanismsElement);
-	}
-	if (streamFeatures->hasResourceBind()) {
-		streamFeaturesElement.addNode(boost::shared_ptr<XMLElement>(new XMLElement("bind", "urn:ietf:params:xml:ns:xmpp-bind")));
-	}
-	if (streamFeatures->hasSession()) {
-		streamFeaturesElement.addNode(boost::shared_ptr<XMLElement>(new XMLElement("session", "urn:ietf:params:xml:ns:xmpp-session")));
-	}
-	return streamFeaturesElement.serialize();
-}
-
-}
diff --git a/Swiften/Serializer/StreamFeaturesSerializer.h b/Swiften/Serializer/StreamFeaturesSerializer.h
deleted file mode 100644
index f2da1bf..0000000
--- a/Swiften/Serializer/StreamFeaturesSerializer.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef SWIFTEN_StreamFeaturesSerializer_H
-#define SWIFTEN_StreamFeaturesSerializer_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/StreamFeatures.h"
-#include "Swiften/Serializer/GenericElementSerializer.h"
-
-namespace Swift {
-	class StreamFeaturesSerializer : public GenericElementSerializer<StreamFeatures> {
-		public:
-			StreamFeaturesSerializer();
-
-			virtual String serialize(boost::shared_ptr<Element> element)  const;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/TLSProceedSerializer.h b/Swiften/Serializer/TLSProceedSerializer.h
deleted file mode 100644
index d3829ac..0000000
--- a/Swiften/Serializer/TLSProceedSerializer.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef SWIFTEN_TLSProceedSerializer_H
-#define SWIFTEN_TLSProceedSerializer_H
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/TLSProceed.h"
-#include "Swiften/Serializer/GenericElementSerializer.h"
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-namespace Swift {
-	class TLSProceedSerializer : public GenericElementSerializer<TLSProceed> {
-		public:
-			TLSProceedSerializer() : GenericElementSerializer<TLSProceed>() {
-			}
-
-			virtual String serialize(boost::shared_ptr<Element>) const {
-				return XMLElement("proceed", "urn:ietf:params:xml:ns:xmpp-tls").serialize();
-			}
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/UnitTest/StreamFeaturesSerializerTest.cpp b/Swiften/Serializer/UnitTest/StreamFeaturesSerializerTest.cpp
deleted file mode 100644
index 187fe64..0000000
--- a/Swiften/Serializer/UnitTest/StreamFeaturesSerializerTest.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/StreamFeaturesSerializer.h"
-#include "Swiften/Elements/StreamFeatures.h"
-
-using namespace Swift;
-
-class StreamFeaturesSerializerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(StreamFeaturesSerializerTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		StreamFeaturesSerializerTest() {}
-
-		void testSerialize() {
-			StreamFeaturesSerializer testling;
-			boost::shared_ptr<StreamFeatures> streamFeatures(new StreamFeatures());
-			streamFeatures->setHasStartTLS();
-			streamFeatures->addCompressionMethod("zlib");
-			streamFeatures->addCompressionMethod("lzw");
-			streamFeatures->addAuthenticationMechanism("DIGEST-MD5");
-			streamFeatures->addAuthenticationMechanism("PLAIN");
-			streamFeatures->setHasResourceBind();
-			streamFeatures->setHasSession();
-
-			CPPUNIT_ASSERT_EQUAL(String(
-				"<stream:features>"
-					"<starttls xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"/>"
-					"<compression xmlns=\"http://jabber.org/features/compress\">"
-						"<method>zlib</method>"
-						"<method>lzw</method>"
-					"</compression>"
-					"<mechanisms xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">"
-						"<mechanism>DIGEST-MD5</mechanism>"
-						"<mechanism>PLAIN</mechanism>"
-					"</mechanisms>"
-					"<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\"/>"
-					"<session xmlns=\"urn:ietf:params:xml:ns:xmpp-session\"/>"
-				"</stream:features>"), testling.serialize(streamFeatures));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StreamFeaturesSerializerTest);
diff --git a/Swiften/Serializer/XML/UnitTest/XMLElementTest.cpp b/Swiften/Serializer/XML/UnitTest/XMLElementTest.cpp
deleted file mode 100644
index 49eb109..0000000
--- a/Swiften/Serializer/XML/UnitTest/XMLElementTest.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Serializer/XML/XMLElement.h"
-#include "Swiften/Serializer/XML/XMLTextNode.h"
-
-using namespace Swift;
-
-class XMLElementTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(XMLElementTest);
-		CPPUNIT_TEST(testSerialize);
-		CPPUNIT_TEST(testSerialize_NoChildren);
-		CPPUNIT_TEST(testSerialize_SpecialAttributeCharacters);
-		CPPUNIT_TEST(testSerialize_EmptyAttributeValue);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		XMLElementTest() {}
-
-		void testSerialize() {
-			XMLElement testling("foo", "http://example.com");
-			testling.setAttribute("myatt", "myval");
-			boost::shared_ptr<XMLElement> barElement(new XMLElement("bar"));
-			barElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode("Blo")));
-			testling.addNode(barElement);
-			boost::shared_ptr<XMLElement> bazElement(new XMLElement("baz"));
-			bazElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode("Bli")));
-			testling.addNode(bazElement);
-
-			String result = testling.serialize();
-			String expectedResult = 
-				"<foo myatt=\"myval\" xmlns=\"http://example.com\">"
-					"<bar>Blo</bar>"
-					"<baz>Bli</baz>"
-				"</foo>";
-
-			CPPUNIT_ASSERT_EQUAL(expectedResult, result);
-		}
-
-		void testSerialize_NoChildren() {
-			XMLElement testling("foo", "http://example.com");
-
-			CPPUNIT_ASSERT_EQUAL(String("<foo xmlns=\"http://example.com\"/>"), testling.serialize());
-		}
-
-		void testSerialize_SpecialAttributeCharacters() {
-			XMLElement testling("foo");
-			testling.setAttribute("myatt", "<\"'&>");
-
-			CPPUNIT_ASSERT_EQUAL(String("<foo myatt=\"&lt;&quot;&apos;&amp;&gt;\"/>"), testling.serialize());
-		}
-
-		void testSerialize_EmptyAttributeValue() {
-			XMLElement testling("foo");
-			testling.setAttribute("myatt", "");
-
-			CPPUNIT_ASSERT_EQUAL(String("<foo myatt=\"\"/>"), testling.serialize());
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(XMLElementTest);
diff --git a/Swiften/Serializer/XML/XMLElement.cpp b/Swiften/Serializer/XML/XMLElement.cpp
deleted file mode 100644
index 71f4d0c..0000000
--- a/Swiften/Serializer/XML/XMLElement.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "Swiften/Serializer/XML/XMLElement.h"
-
-#include "Swiften/Base/foreach.h"
-
-namespace Swift {
-
-XMLElement::XMLElement(const String& tag, const String& xmlns) : 
-		tag_(tag) {
-	if (!xmlns.isEmpty()) {
-		setAttribute("xmlns", xmlns);
-	}
-}
-
-String XMLElement::serialize() {
-	String result;
-	result += "<" + tag_;
-	typedef std::pair<String,String> Pair;
-	foreach(const Pair& p, attributes_) {
-		result += " " + p.first + "=\"" + p.second + "\"";
-	}
-
-	if (childNodes_.size() > 0) {
-		result += ">";
-		foreach (boost::shared_ptr<XMLNode> node, childNodes_) {
-			result += node->serialize();
-		}
-		result += "</" + tag_ + ">";
-	}
-	else {
-		result += "/>";
-	}
-	return result;
-}
-
-void XMLElement::setAttribute(const String& attribute, const String& value) {
-	String escapedValue(value);
-	escapedValue.replaceAll('&', "&amp;");
-	escapedValue.replaceAll('<', "&lt;");
-	escapedValue.replaceAll('>', "&gt;");
-	escapedValue.replaceAll('\'', "&apos;");
-	escapedValue.replaceAll('"', "&quot;");
-	attributes_[attribute] = escapedValue;
-}
-
-void XMLElement::addNode(boost::shared_ptr<XMLNode> node) {
-	childNodes_.push_back(node);
-}
-
-}
diff --git a/Swiften/Serializer/XML/XMLElement.h b/Swiften/Serializer/XML/XMLElement.h
deleted file mode 100644
index f2eb8bf..0000000
--- a/Swiften/Serializer/XML/XMLElement.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef SWIFTEN_XMLElement_H
-#define SWIFTEN_XMLElement_H
-
-#include <boost/shared_ptr.hpp>
-#include <vector>
-#include <map>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Serializer/XML/XMLNode.h"
-
-namespace Swift {
-	class XMLElement : public XMLNode {
-		public:
-			XMLElement(const String& tag, const String& xmlns = "");
-
-			void setAttribute(const String& attribute, const String& value);
-			void addNode(boost::shared_ptr<XMLNode> node);
-
-			virtual String serialize();
-
-		private:
-			String tag_;
-			std::map<String, String> attributes_;
-			std::vector< boost::shared_ptr<XMLNode> > childNodes_;
-	};
-}
-#endif
diff --git a/Swiften/Serializer/XML/XMLNode.cpp b/Swiften/Serializer/XML/XMLNode.cpp
deleted file mode 100644
index 1bef64a..0000000
--- a/Swiften/Serializer/XML/XMLNode.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Serializer/XML/XMLNode.h"
-
-namespace Swift {
-
-XMLNode::~XMLNode() {
-}
-
-}
diff --git a/Swiften/Serializer/XML/XMLNode.h b/Swiften/Serializer/XML/XMLNode.h
deleted file mode 100644
index b31c0d6..0000000
--- a/Swiften/Serializer/XML/XMLNode.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef SWIFTEN_XMLNode_H
-#define SWIFTEN_XMLNode_H
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class XMLNode {
-		public:
-			virtual ~XMLNode();
-
-			virtual String serialize() = 0;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/XML/XMLRawTextNode.h b/Swiften/Serializer/XML/XMLRawTextNode.h
deleted file mode 100644
index e5800c3..0000000
--- a/Swiften/Serializer/XML/XMLRawTextNode.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef SWIFTEN_XMLRawTextNode_H
-#define SWIFTEN_XMLRawTextNode_H
-
-#include "Swiften/Serializer/XML/XMLNode.h"
-
-namespace Swift {
-	class XMLRawTextNode : public XMLNode {
-		public:
-			XMLRawTextNode(const String& text) : text_(text) {
-			}
-
-			String serialize() {
-				return text_;
-			}
-
-		private:
-			String text_;
-	};
-}
-
-#endif
diff --git a/Swiften/Serializer/XML/XMLTextNode.h b/Swiften/Serializer/XML/XMLTextNode.h
deleted file mode 100644
index 87dda53..0000000
--- a/Swiften/Serializer/XML/XMLTextNode.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#pragma once
-
-#include "Swiften/Serializer/XML/XMLNode.h"
-
-namespace Swift {
-	class XMLTextNode : public XMLNode {
-		public:
-			XMLTextNode(const String& text) : text_(text) {
-				text_.replaceAll('&', "&amp;"); // Should come first
-				text_.replaceAll('<', "&lt;");
-				text_.replaceAll('>', "&gt;");
-			}
-
-			String serialize() {
-				return text_;
-			}
-
-		private:
-			String text_;
-	};
-}
diff --git a/Swiften/Serializer/XMPPSerializer.cpp b/Swiften/Serializer/XMPPSerializer.cpp
deleted file mode 100644
index 082cdf3..0000000
--- a/Swiften/Serializer/XMPPSerializer.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-#include "Swiften/Serializer/XMPPSerializer.h"
-
-#include <boost/bind.hpp>
-#include <iostream>
-
-#include "Swiften/Elements/ProtocolHeader.h"
-#include "Swiften/Base/foreach.h"
-#include "Swiften/Serializer/CompressRequestSerializer.h"
-#include "Swiften/Serializer/CompressFailureSerializer.h"
-#include "Swiften/Serializer/StreamFeaturesSerializer.h"
-#include "Swiften/Serializer/AuthRequestSerializer.h"
-#include "Swiften/Serializer/AuthFailureSerializer.h"
-#include "Swiften/Serializer/AuthSuccessSerializer.h"
-#include "Swiften/Serializer/AuthChallengeSerializer.h"
-#include "Swiften/Serializer/AuthResponseSerializer.h"
-#include "Swiften/Serializer/StartTLSRequestSerializer.h"
-#include "Swiften/Serializer/StartTLSFailureSerializer.h"
-#include "Swiften/Serializer/TLSProceedSerializer.h"
-#include "Swiften/Serializer/MessageSerializer.h"
-#include "Swiften/Serializer/PresenceSerializer.h"
-#include "Swiften/Serializer/IQSerializer.h"
-
-namespace Swift {
-
-XMPPSerializer::XMPPSerializer(PayloadSerializerCollection* payloadSerializers) {
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new PresenceSerializer(payloadSerializers)));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new IQSerializer(payloadSerializers)));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new MessageSerializer(payloadSerializers)));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new CompressRequestSerializer()));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new CompressFailureSerializer()));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new AuthRequestSerializer()));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new AuthFailureSerializer()));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new AuthSuccessSerializer()));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new AuthChallengeSerializer()));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new AuthResponseSerializer()));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new StartTLSRequestSerializer()));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new StartTLSFailureSerializer()));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new TLSProceedSerializer()));
-	serializers_.push_back(boost::shared_ptr<ElementSerializer>(new StreamFeaturesSerializer()));
-}
-
-String XMPPSerializer::serializeHeader(const ProtocolHeader& header) const {
-	String result = "<?xml version=\"1.0\"?><stream:stream xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\"";
-	if (!header.getFrom().isEmpty()) {
-		result += " from=\"" + header.getFrom() + "\"";
-	}
-	if (!header.getTo().isEmpty()) {
-		result += " to=\"" + header.getTo() + "\"";
-	}
-	if (!header.getID().isEmpty()) {
-		result += " id=\"" + header.getID() + "\"";
-	}
-	if (!header.getVersion().isEmpty()) {
-		result += " version=\"" + header.getVersion() + "\"";
-	}
-	result += ">";
-	return result;
-}
-
-String XMPPSerializer::serializeElement(boost::shared_ptr<Element> element) const {
-	std::vector< boost::shared_ptr<ElementSerializer> >::const_iterator i = std::find_if(
-			serializers_.begin(), serializers_.end(), 
-			boost::bind(&ElementSerializer::canSerialize, _1, element));
-	if (i != serializers_.end()) {
-		return (*i)->serialize(element);
-	}
-	else {
-		std::cerr << "Could not find serializer for " << typeid(*(element.get())).name() << std::endl;
-		return "";
-	}
-}
-
-String XMPPSerializer::serializeFooter() const {
-	return "</stream:stream>";
-}
-
-}
diff --git a/Swiften/Serializer/XMPPSerializer.h b/Swiften/Serializer/XMPPSerializer.h
deleted file mode 100644
index 38ba3ff..0000000
--- a/Swiften/Serializer/XMPPSerializer.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <vector>
-
-#include "Swiften/Elements/Element.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Serializer/ElementSerializer.h"
-
-namespace Swift {
-	class PayloadSerializerCollection;
-	class CompressRequestSerializer;
-	class ProtocolHeader;
-
-	class XMPPSerializer {
-		public:
-			XMPPSerializer(PayloadSerializerCollection*);
-
-			String serializeHeader(const ProtocolHeader&) const;
-			String serializeElement(boost::shared_ptr<Element> stanza) const;
-			String serializeFooter() const;
-		
-		private:
-			std::vector< boost::shared_ptr<ElementSerializer> > serializers_;
-	};
-}
diff --git a/Swiften/Server/ServerFromClientSession.cpp b/Swiften/Server/ServerFromClientSession.cpp
deleted file mode 100644
index c974e18..0000000
--- a/Swiften/Server/ServerFromClientSession.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-#include "Swiften/Server/ServerFromClientSession.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/Elements/ProtocolHeader.h"
-#include "Swiften/Server/UserRegistry.h"
-#include "Swiften/Network/Connection.h"
-#include "Swiften/StreamStack/XMPPLayer.h"
-#include "Swiften/Elements/StreamFeatures.h"
-#include "Swiften/Elements/ResourceBind.h"
-#include "Swiften/Elements/StartSession.h"
-#include "Swiften/Elements/IQ.h"
-#include "Swiften/Elements/AuthSuccess.h"
-#include "Swiften/Elements/AuthFailure.h"
-#include "Swiften/Elements/AuthRequest.h"
-#include "Swiften/SASL/PLAINMessage.h"
-
-namespace Swift {
-
-ServerFromClientSession::ServerFromClientSession(
-		const String& id,
-		boost::shared_ptr<Connection> connection, 
-		PayloadParserFactoryCollection* payloadParserFactories, 
-		PayloadSerializerCollection* payloadSerializers,
-		UserRegistry* userRegistry) : 
-			Session(connection, payloadParserFactories, payloadSerializers),
-			id_(id),
-			userRegistry_(userRegistry),
-			authenticated_(false),
-			initialized(false) {
-}
-
-
-void ServerFromClientSession::handleElement(boost::shared_ptr<Element> element) {
-	if (isInitialized()) {
-		onElementReceived(element);
-	}
-	else {
-		if (AuthRequest* authRequest = dynamic_cast<AuthRequest*>(element.get())) {
-			if (authRequest->getMechanism() != "PLAIN") {
-				getXMPPLayer()->writeElement(boost::shared_ptr<AuthFailure>(new AuthFailure));
-				finishSession(NoSupportedAuthMechanismsError);
-			}
-			else {
-				PLAINMessage plainMessage(authRequest->getMessage());
-				if (userRegistry_->isValidUserPassword(JID(plainMessage.getAuthenticationID(), getLocalJID().getDomain()), plainMessage.getPassword())) {
-					getXMPPLayer()->writeElement(boost::shared_ptr<AuthSuccess>(new AuthSuccess()));
-					user_ = plainMessage.getAuthenticationID();
-					authenticated_ = true;
-					getXMPPLayer()->resetParser();
-				}
-				else {
-					getXMPPLayer()->writeElement(boost::shared_ptr<AuthFailure>(new AuthFailure));
-					finishSession(AuthenticationFailedError);
-				}
-			}
-		}
-		else if (IQ* iq = dynamic_cast<IQ*>(element.get())) {
-			if (boost::shared_ptr<ResourceBind> resourceBind = iq->getPayload<ResourceBind>()) {
-				setRemoteJID(JID(user_, getLocalJID().getDomain(), resourceBind->getResource()));
-				boost::shared_ptr<ResourceBind> resultResourceBind(new ResourceBind());
-				resultResourceBind->setJID(getRemoteJID());
-				getXMPPLayer()->writeElement(IQ::createResult(JID(), iq->getID(), resultResourceBind));
-			}
-			else if (iq->getPayload<StartSession>()) {
-				getXMPPLayer()->writeElement(IQ::createResult(getRemoteJID(), iq->getID()));
-				setInitialized();
-			}
-		}
-	}
-}
-
-void ServerFromClientSession::handleStreamStart(const ProtocolHeader& incomingHeader) {
-	setLocalJID(JID("", incomingHeader.getTo()));
-	ProtocolHeader header;
-	header.setFrom(incomingHeader.getTo());
-	header.setID(id_);
-	getXMPPLayer()->writeHeader(header);
-
-	boost::shared_ptr<StreamFeatures> features(new StreamFeatures());
-	if (!authenticated_) {
-		features->addAuthenticationMechanism("PLAIN");
-	}
-	else {
-		features->setHasResourceBind();
-		features->setHasSession();
-	}
-	getXMPPLayer()->writeElement(features);
-}
-
-void ServerFromClientSession::setInitialized() {
-	initialized = true;
-	onSessionStarted();
-}
-
-
-}
diff --git a/Swiften/Server/ServerFromClientSession.h b/Swiften/Server/ServerFromClientSession.h
deleted file mode 100644
index 33826a4..0000000
--- a/Swiften/Server/ServerFromClientSession.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/signal.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Session/Session.h"
-#include "Swiften/JID/JID.h"
-#include "Swiften/Network/Connection.h"
-
-namespace Swift {
-	class ProtocolHeader;
-	class Element;
-	class Stanza;
-	class PayloadParserFactoryCollection;
-	class PayloadSerializerCollection;
-	class StreamStack;
-	class UserRegistry;
-	class XMPPLayer;
-	class ConnectionLayer;
-	class Connection;
-	class ByteArray;
-
-	class ServerFromClientSession : public Session {
-		public:
-			ServerFromClientSession(
-					const String& id,
-					boost::shared_ptr<Connection> connection, 
-					PayloadParserFactoryCollection* payloadParserFactories, 
-					PayloadSerializerCollection* payloadSerializers,
-					UserRegistry* userRegistry);
-
-			boost::signal<void ()> onSessionStarted;
-
-		private:
-			void handleElement(boost::shared_ptr<Element>);
-			void handleStreamStart(const ProtocolHeader& header);
-
-			void setInitialized();
-			bool isInitialized() const { 
-				return initialized; 
-			}
-
-		private:
-			String id_;
-			UserRegistry* userRegistry_;
-			bool authenticated_;
-			bool initialized;
-			String user_;
-	};
-}
diff --git a/Swiften/Server/ServerSession.cpp b/Swiften/Server/ServerSession.cpp
deleted file mode 100644
index e62957c..0000000
--- a/Swiften/Server/ServerSession.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Server/ServerSession.h"
-
-namespace Swift {
-
-ServerSession::~ServerSession() {
-}
-
-}
diff --git a/Swiften/Server/ServerSession.h b/Swiften/Server/ServerSession.h
deleted file mode 100644
index 1ebf68e..0000000
--- a/Swiften/Server/ServerSession.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/Stanza.h"
-
-namespace Swift {
-	class ServerSession {
-		public:
-			virtual ~ServerSession();
-
-			virtual const JID& getJID() const = 0;
-			virtual int getPriority() const = 0;
-
-			virtual void sendStanza(boost::shared_ptr<Stanza>) = 0;
-	};
-}
diff --git a/Swiften/Server/ServerStanzaRouter.cpp b/Swiften/Server/ServerStanzaRouter.cpp
deleted file mode 100644
index 5661de5..0000000
--- a/Swiften/Server/ServerStanzaRouter.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-#include "Swiften/Server/ServerStanzaRouter.h"
-#include "Swiften/Server/ServerSession.h"
-
-#include <cassert>
-#include <algorithm>
-
-namespace Swift {
-
-namespace {
-	struct PriorityLessThan {
-		bool operator()(const ServerSession* s1, const ServerSession* s2) const {
-			return s1->getPriority() < s2->getPriority();
-		}
-	};
-
-	struct HasJID {
-		HasJID(const JID& jid) : jid(jid) {}
-		bool operator()(const ServerSession* session) const {
-			return session->getJID().equals(jid, JID::WithResource);
-		}
-		JID jid;
-	};
-}
-
-ServerStanzaRouter::ServerStanzaRouter() {
-}
-
-bool ServerStanzaRouter::routeStanza(boost::shared_ptr<Stanza> stanza) {
-	JID to = stanza->getTo();
-	assert(to.isValid());
-
-	// For a full JID, first try to route to a session with the full JID
-	if (!to.isBare()) {
-		std::vector<ServerSession*>::const_iterator i = std::find_if(clientSessions_.begin(), clientSessions_.end(), HasJID(to));
-		if (i != clientSessions_.end()) {
-			(*i)->sendStanza(stanza);
-			return true;
-		}
-	}
-
-	// Look for candidate sessions
-	to = to.toBare();
-	std::vector<ServerSession*> candidateSessions;
-	for (std::vector<ServerSession*>::const_iterator i = clientSessions_.begin(); i != clientSessions_.end(); ++i) {
-		if ((*i)->getJID().equals(to, JID::WithoutResource) && (*i)->getPriority() >= 0) {
-			candidateSessions.push_back(*i);
-		}
-	}
-	if (candidateSessions.empty()) {
-		return false;
-	}
-
-	// Find the session with the highest priority
-	std::vector<ServerSession*>::const_iterator i = std::max_element(clientSessions_.begin(), clientSessions_.end(), PriorityLessThan());
-	(*i)->sendStanza(stanza);
-	return true;
-}
-
-void ServerStanzaRouter::addClientSession(ServerSession* clientSession) {
-	clientSessions_.push_back(clientSession);
-}
-
-void ServerStanzaRouter::removeClientSession(ServerSession* clientSession) {
-	clientSessions_.erase(std::remove(clientSessions_.begin(), clientSessions_.end(), clientSession), clientSessions_.end());
-}
-
-}
diff --git a/Swiften/Server/ServerStanzaRouter.h b/Swiften/Server/ServerStanzaRouter.h
deleted file mode 100644
index 057a2ea..0000000
--- a/Swiften/Server/ServerStanzaRouter.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <map>
-
-#include "Swiften/JID/JID.h"
-#include "Swiften/Elements/Stanza.h"
-
-namespace Swift {
-	class ServerSession;
-
-	class ServerStanzaRouter {
-		public:
-			ServerStanzaRouter();
-
-			bool routeStanza(boost::shared_ptr<Stanza>);
-
-			void addClientSession(ServerSession*);
-			void removeClientSession(ServerSession*);
-
-		private:
-			std::vector<ServerSession*> clientSessions_;
-	};
-}
diff --git a/Swiften/Server/SimpleUserRegistry.cpp b/Swiften/Server/SimpleUserRegistry.cpp
deleted file mode 100644
index 1a6743a..0000000
--- a/Swiften/Server/SimpleUserRegistry.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "Swiften/Server/SimpleUserRegistry.h"
-
-namespace Swift {
-
-SimpleUserRegistry::SimpleUserRegistry() {
-}
-
-bool SimpleUserRegistry::isValidUserPassword(const JID& user, const String& password) const {
-	std::map<JID,String>::const_iterator i = users.find(user);
-	return i != users.end() ? i->second == password : false;
-}
-
-void SimpleUserRegistry::addUser(const JID& user, const String& password) {
-	users.insert(std::make_pair(user, password));
-}
-
-}
diff --git a/Swiften/Server/SimpleUserRegistry.h b/Swiften/Server/SimpleUserRegistry.h
deleted file mode 100644
index 253025d..0000000
--- a/Swiften/Server/SimpleUserRegistry.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#pragma once
-
-#include <map>
-
-#include "Swiften/JID/JID.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Server/UserRegistry.h"
-
-namespace Swift {
-	class String;
-
-	class SimpleUserRegistry : public UserRegistry {
-		public:
-			SimpleUserRegistry();
-
-			virtual bool isValidUserPassword(const JID& user, const String& password) const;
-			void addUser(const JID& user, const String& password);
-
-		private:
-			std::map<JID, String> users;
-	};
-}
diff --git a/Swiften/Server/UnitTest/ServerStanzaRouterTest.cpp b/Swiften/Server/UnitTest/ServerStanzaRouterTest.cpp
deleted file mode 100644
index 03a607a..0000000
--- a/Swiften/Server/UnitTest/ServerStanzaRouterTest.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Elements/Message.h"
-#include "Swiften/Server/ServerStanzaRouter.h"
-#include "Swiften/Server/ServerSession.h"
-
-using namespace Swift;
-
-class ServerStanzaRouterTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(ServerStanzaRouterTest);
-		CPPUNIT_TEST(testRouteStanza_FullJID);
-		CPPUNIT_TEST(testRouteStanza_FullJIDWithNegativePriority);
-		CPPUNIT_TEST(testRouteStanza_FullJIDWithOnlyBareJIDMatchingSession);
-		CPPUNIT_TEST(testRouteStanza_BareJIDWithoutMatchingSession);
-		CPPUNIT_TEST(testRouteStanza_BareJIDWithMultipleSessions);
-		CPPUNIT_TEST(testRouteStanza_BareJIDWithOnlyNegativePriorities);
-		CPPUNIT_TEST(testRouteStanza_BareJIDWithChangingPresence);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		ServerStanzaRouterTest() {}
-
-		void setUp() {
-		}
-
-		void tearDown() {
-		}
-
-		void testRouteStanza_FullJID() {
-			ServerStanzaRouter testling;
-			MockServerSession session1(JID("foo@bar.com/Bla"), 0);
-			testling.addClientSession(&session1);
-			MockServerSession session2(JID("foo@bar.com/Baz"), 0);
-			testling.addClientSession(&session2);
-
-			bool result = testling.routeStanza(createMessageTo("foo@bar.com/Baz"));
-
-			CPPUNIT_ASSERT(result);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(session1.sentStanzas.size()));
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(session2.sentStanzas.size()));
-		}
-
-		void testRouteStanza_FullJIDWithNegativePriority() {
-			ServerStanzaRouter testling;
-			MockServerSession session1(JID("foo@bar.com/Bla"), -1);
-			testling.addClientSession(&session1);
-			MockServerSession session2(JID("foo@bar.com/Baz"), 0);
-			testling.addClientSession(&session2);
-
-			bool result = testling.routeStanza(createMessageTo("foo@bar.com/Bla"));
-
-			CPPUNIT_ASSERT(result);
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(session1.sentStanzas.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(session2.sentStanzas.size()));
-		}
-
-		void testRouteStanza_FullJIDWithOnlyBareJIDMatchingSession() {
-			ServerStanzaRouter testling;
-			MockServerSession session(JID("foo@bar.com/Bla"), 0);
-			testling.addClientSession(&session);
-
-			bool result = testling.routeStanza(createMessageTo("foo@bar.com/Baz"));
-
-			CPPUNIT_ASSERT(result);
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(session.sentStanzas.size()));
-		}
-
-		void testRouteStanza_BareJIDWithoutMatchingSession() {
-			ServerStanzaRouter testling;
-
-			bool result = testling.routeStanza(createMessageTo("foo@bar.com"));
-
-			CPPUNIT_ASSERT(!result);
-		}
-
-		void testRouteStanza_BareJIDWithMultipleSessions() {
-			ServerStanzaRouter testling;
-			MockServerSession session1(JID("foo@bar.com/Bla"), 1);
-			testling.addClientSession(&session1);
-			MockServerSession session2(JID("foo@bar.com/Baz"), 8);
-			testling.addClientSession(&session2);
-			MockServerSession session3(JID("foo@bar.com/Bar"), 5);
-			testling.addClientSession(&session3);
-
-			bool result = testling.routeStanza(createMessageTo("foo@bar.com"));
-
-			CPPUNIT_ASSERT(result);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(session1.sentStanzas.size()));
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(session2.sentStanzas.size()));
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(session3.sentStanzas.size()));
-		}
-
-		void testRouteStanza_BareJIDWithOnlyNegativePriorities() {
-			ServerStanzaRouter testling;
-			MockServerSession session(JID("foo@bar.com/Bla"), -1);
-			testling.addClientSession(&session);
-
-			bool result = testling.routeStanza(createMessageTo("foo@bar.com"));
-
-			CPPUNIT_ASSERT(!result);
-		}
-
-		void testRouteStanza_BareJIDWithChangingPresence() {
-			ServerStanzaRouter testling;
-			MockServerSession session1(JID("foo@bar.com/Baz"), 8);
-			testling.addClientSession(&session1);
-			MockServerSession session2(JID("foo@bar.com/Bar"), 5);
-			testling.addClientSession(&session2);
-
-			session1.priority = 3;
-			session2.priority = 4;
-			bool result = testling.routeStanza(createMessageTo("foo@bar.com"));
-
-			CPPUNIT_ASSERT(result);
-			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(session1.sentStanzas.size()));
-			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(session2.sentStanzas.size()));
-		}
-
-	private:
-		boost::shared_ptr<Message> createMessageTo(const String& recipient) {
-			boost::shared_ptr<Message> message(new Message());
-			message->setTo(JID(recipient));
-			return message;
-		}
-
-		class MockServerSession : public ServerSession {
-			public:
-				MockServerSession(const JID& jid, int priority) : jid(jid), priority(priority) {}
-
-				virtual const JID& getJID() const { return jid; }
-				virtual int getPriority() const { return priority; }
-
-				virtual void sendStanza(boost::shared_ptr<Stanza> stanza) {
-					sentStanzas.push_back(stanza);
-				}
-
-				JID jid;
-				int priority;
-				std::vector< boost::shared_ptr<Stanza> > sentStanzas;
-		};
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ServerStanzaRouterTest);
diff --git a/Swiften/Server/UserRegistry.cpp b/Swiften/Server/UserRegistry.cpp
deleted file mode 100644
index d1a509f..0000000
--- a/Swiften/Server/UserRegistry.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Server/UserRegistry.h"
-
-namespace Swift {
-
-UserRegistry::~UserRegistry() {
-}
-
-}
diff --git a/Swiften/Server/UserRegistry.h b/Swiften/Server/UserRegistry.h
deleted file mode 100644
index 5ced019..0000000
--- a/Swiften/Server/UserRegistry.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-namespace Swift {
-	class String;
-	class JID;
-
-	class UserRegistry {
-		public:
-			virtual ~UserRegistry();
-
-			virtual bool isValidUserPassword(const JID& user, const String& password) const = 0;
-	};
-}
diff --git a/Swiften/Session/BasicSessionStream.cpp b/Swiften/Session/BasicSessionStream.cpp
deleted file mode 100644
index ed7f1eb..0000000
--- a/Swiften/Session/BasicSessionStream.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-#include "Swiften/Session/BasicSessionStream.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/StreamStack/XMPPLayer.h"
-#include "Swiften/StreamStack/StreamStack.h"
-#include "Swiften/StreamStack/ConnectionLayer.h"
-#include "Swiften/StreamStack/WhitespacePingLayer.h"
-#include "Swiften/StreamStack/CompressionLayer.h"
-#include "Swiften/StreamStack/TLSLayer.h"
-#include "Swiften/StreamStack/TLSLayerFactory.h"
-
-namespace Swift {
-
-BasicSessionStream::BasicSessionStream(boost::shared_ptr<Connection> connection, PayloadParserFactoryCollection* payloadParserFactories, PayloadSerializerCollection* payloadSerializers, TLSLayerFactory* tlsLayerFactory, TimerFactory* timerFactory) : available(false), connection(connection), payloadParserFactories(payloadParserFactories), payloadSerializers(payloadSerializers), tlsLayerFactory(tlsLayerFactory), timerFactory(timerFactory) {
-}
-
-void BasicSessionStream::initialize() {
-	xmppLayer = boost::shared_ptr<XMPPLayer>(
-			new XMPPLayer(payloadParserFactories, payloadSerializers));
-	xmppLayer->onStreamStart.connect(boost::bind(&BasicSessionStream::handleStreamStartReceived, shared_from_this(), _1));
-	xmppLayer->onElement.connect(boost::bind(&BasicSessionStream::handleElementReceived, shared_from_this(), _1));
-	xmppLayer->onError.connect(boost::bind(
-			&BasicSessionStream::handleXMPPError, shared_from_this()));
-	xmppLayer->onDataRead.connect(boost::bind(&BasicSessionStream::handleDataRead, shared_from_this(), _1));
-	xmppLayer->onWriteData.connect(boost::bind(&BasicSessionStream::handleDataWritten, shared_from_this(), _1));
-
-	connection->onDisconnected.connect(boost::bind(&BasicSessionStream::handleConnectionError, shared_from_this(), _1));
-	connectionLayer = boost::shared_ptr<ConnectionLayer>(
-			new ConnectionLayer(connection));
-
-	streamStack = new StreamStack(xmppLayer, connectionLayer);
-
-	available = true;
-}
-
-BasicSessionStream::~BasicSessionStream() {
-	delete streamStack;
-}
-
-void BasicSessionStream::writeHeader(const ProtocolHeader& header) {
-	assert(available);
-	xmppLayer->writeHeader(header);
-}
-
-void BasicSessionStream::writeElement(boost::shared_ptr<Element> element) {
-	assert(available);
-	xmppLayer->writeElement(element);
-}
-
-void BasicSessionStream::writeFooter() {
-	assert(available);
-	xmppLayer->writeFooter();
-}
-
-bool BasicSessionStream::isAvailable() {
-	return available;
-}
-
-bool BasicSessionStream::supportsTLSEncryption() {
-	return tlsLayerFactory && tlsLayerFactory->canCreate();
-}
-
-void BasicSessionStream::addTLSEncryption() {
-	assert(available);
-	tlsLayer = tlsLayerFactory->createTLSLayer();
-	if (hasTLSCertificate() && !tlsLayer->setClientCertificate(getTLSCertificate())) {
-		onError(boost::shared_ptr<Error>(new Error(Error::InvalidTLSCertificateError)));
-	}
-	else {
-		streamStack->addLayer(tlsLayer);
-		tlsLayer->onError.connect(boost::bind(&BasicSessionStream::handleTLSError, shared_from_this()));
-		tlsLayer->onConnected.connect(boost::bind(&BasicSessionStream::handleTLSConnected, shared_from_this()));
-		tlsLayer->connect();
-	}
-}
-
-void BasicSessionStream::addZLibCompression() {
-	boost::shared_ptr<CompressionLayer> compressionLayer(new CompressionLayer());
-	streamStack->addLayer(compressionLayer);
-}
-
-void BasicSessionStream::setWhitespacePingEnabled(bool enabled) {
-	if (enabled) {
-		if (!whitespacePingLayer) {
-			whitespacePingLayer = boost::shared_ptr<WhitespacePingLayer>(new WhitespacePingLayer(timerFactory));
-			streamStack->addLayer(whitespacePingLayer);
-		}
-		whitespacePingLayer->setActive();
-	}
-	else if (whitespacePingLayer) {
-		whitespacePingLayer->setInactive();
-	}
-}
-
-void BasicSessionStream::resetXMPPParser() {
-	xmppLayer->resetParser();
-}
-
-void BasicSessionStream::handleStreamStartReceived(const ProtocolHeader& header) {
-	onStreamStartReceived(header);
-}
-
-void BasicSessionStream::handleElementReceived(boost::shared_ptr<Element> element) {
-	onElementReceived(element);
-}
-
-void BasicSessionStream::handleXMPPError() {
-	available = false;
-	onError(boost::shared_ptr<Error>(new Error(Error::ParseError)));
-}
-
-void BasicSessionStream::handleTLSConnected() {
-	onTLSEncrypted();
-}
-
-void BasicSessionStream::handleTLSError() {
-	available = false;
-	onError(boost::shared_ptr<Error>(new Error(Error::TLSError)));
-}
-
-void BasicSessionStream::handleConnectionError(const boost::optional<Connection::Error>& error) {
-	available = false;
-	if (error == Connection::ReadError) {
-		onError(boost::shared_ptr<Error>(new Error(Error::ConnectionReadError)));
-	}
-	else {
-		onError(boost::shared_ptr<Error>(new Error(Error::ConnectionWriteError)));
-	}
-}
-
-void BasicSessionStream::handleDataRead(const ByteArray& data) {
-	onDataRead(String(data.getData(), data.getSize()));
-}
-
-void BasicSessionStream::handleDataWritten(const ByteArray& data) {
-	onDataWritten(String(data.getData(), data.getSize()));
-}
-
-};
diff --git a/Swiften/Session/BasicSessionStream.h b/Swiften/Session/BasicSessionStream.h
deleted file mode 100644
index 8618458..0000000
--- a/Swiften/Session/BasicSessionStream.h
+++ /dev/null
@@ -1,75 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "Swiften/Network/Connection.h"
-#include "Swiften/Session/SessionStream.h"
-
-namespace Swift {
-	class TLSLayerFactory;
-	class TLSLayer;
-	class TimerFactory;
-	class WhitespacePingLayer;
-	class PayloadParserFactoryCollection;
-	class PayloadSerializerCollection;
-	class StreamStack;
-	class XMPPLayer;
-	class ConnectionLayer;
-	class CompressionLayer;
-
-	class BasicSessionStream : 
-			public SessionStream, 
-			public boost::enable_shared_from_this<BasicSessionStream> {
-		public:
-			BasicSessionStream(
-				boost::shared_ptr<Connection> connection,
-				PayloadParserFactoryCollection* payloadParserFactories, 
-				PayloadSerializerCollection* payloadSerializers,
-				TLSLayerFactory* tlsLayerFactory,
-				TimerFactory* whitespacePingLayerFactory
-			);
-			~BasicSessionStream();
-
-			void initialize();
-
-			virtual bool isAvailable();
-
-			virtual void writeHeader(const ProtocolHeader& header);
-			virtual void writeElement(boost::shared_ptr<Element>);
-			virtual void writeFooter();
-
-			virtual void addZLibCompression();
-
-			virtual bool supportsTLSEncryption();
-			virtual void addTLSEncryption();
-
-			virtual void setWhitespacePingEnabled(bool);
-
-			virtual void resetXMPPParser();
-
-		private:
-			void handleConnectionError(const boost::optional<Connection::Error>& error);
-			void handleXMPPError();
-			void handleTLSConnected();
-			void handleTLSError();
-			void handleStreamStartReceived(const ProtocolHeader&);
-			void handleElementReceived(boost::shared_ptr<Element>);
-			void handleDataRead(const ByteArray& data);
-			void handleDataWritten(const ByteArray& data);
-
-		private:
-			bool available;
-			boost::shared_ptr<Connection> connection;
-			PayloadParserFactoryCollection* payloadParserFactories;
-			PayloadSerializerCollection* payloadSerializers;
-			TLSLayerFactory* tlsLayerFactory;
-			TimerFactory* timerFactory;
-			boost::shared_ptr<XMPPLayer> xmppLayer;
-			boost::shared_ptr<ConnectionLayer> connectionLayer;
-			StreamStack* streamStack;
-			boost::shared_ptr<CompressionLayer> compressionLayer;
-			boost::shared_ptr<TLSLayer> tlsLayer;
-			boost::shared_ptr<WhitespacePingLayer> whitespacePingLayer;
-	};
-}
diff --git a/Swiften/Session/Session.cpp b/Swiften/Session/Session.cpp
deleted file mode 100644
index 64456db..0000000
--- a/Swiften/Session/Session.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-#include "Swiften/Session/Session.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/StreamStack/XMPPLayer.h"
-#include "Swiften/StreamStack/StreamStack.h"
-
-namespace Swift {
-
-Session::Session(
-		boost::shared_ptr<Connection> connection,
-		PayloadParserFactoryCollection* payloadParserFactories, 
-		PayloadSerializerCollection* payloadSerializers) : 
-			connection(connection),
-			payloadParserFactories(payloadParserFactories),
-			payloadSerializers(payloadSerializers),
-			streamStack(0),
-			finishing(false) {
-}
-
-Session::~Session() {
-	delete streamStack;
-}
-
-void Session::startSession() {
-	initializeStreamStack();
-	handleSessionStarted();
-}
-
-void Session::finishSession() {
-	finishing = true;
-	connection->disconnect();
-	handleSessionFinished(boost::optional<SessionError>());
-	finishing = false;
-	onSessionFinished(boost::optional<SessionError>());
-}
-
-void Session::finishSession(const SessionError& error) {
-	finishing = true;
-	connection->disconnect();
-	handleSessionFinished(boost::optional<SessionError>(error));
-	finishing = false;
-	onSessionFinished(boost::optional<SessionError>(error));
-}
-
-void Session::initializeStreamStack() {
-	xmppLayer = boost::shared_ptr<XMPPLayer>(
-			new XMPPLayer(payloadParserFactories, payloadSerializers));
-	xmppLayer->onStreamStart.connect(
-			boost::bind(&Session::handleStreamStart, shared_from_this(), _1));
-	xmppLayer->onElement.connect(boost::bind(&Session::handleElement, shared_from_this(), _1));
-	xmppLayer->onError.connect(
-			boost::bind(&Session::finishSession, shared_from_this(), XMLError));
-	xmppLayer->onDataRead.connect(boost::bind(boost::ref(onDataRead), _1));
-	xmppLayer->onWriteData.connect(boost::bind(boost::ref(onDataWritten), _1));
-	connection->onDisconnected.connect(
-			boost::bind(&Session::handleDisconnected, shared_from_this(), _1));
-	connectionLayer = boost::shared_ptr<ConnectionLayer>(new ConnectionLayer(connection));
-	streamStack = new StreamStack(xmppLayer, connectionLayer);
-}
-
-void Session::sendElement(boost::shared_ptr<Element> stanza) {
-	xmppLayer->writeElement(stanza);
-}
-
-void Session::handleDisconnected(const boost::optional<Connection::Error>& connectionError) {
-	if (connectionError) {
-		switch (*connectionError) {
-			case Connection::ReadError:
-				finishSession(ConnectionReadError);
-				break;
-			case Connection::WriteError:
-				finishSession(ConnectionWriteError);
-				break;
-		}
-	}
-	else {
-		finishSession();
-	}
-}
-
-}
diff --git a/Swiften/Session/Session.h b/Swiften/Session/Session.h
deleted file mode 100644
index d63254a..0000000
--- a/Swiften/Session/Session.h
+++ /dev/null
@@ -1,105 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/signal.hpp>
-#include <boost/optional.hpp>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "Swiften/JID/JID.h"
-#include "Swiften/Elements/Element.h"
-#include "Swiften/Network/Connection.h"
-#include "Swiften/StreamStack/ConnectionLayer.h"
-
-namespace Swift {
-	class ProtocolHeader;
-	class StreamStack;
-	class JID;
-	class Element;
-	class ByteArray;
-	class PayloadParserFactoryCollection;
-	class PayloadSerializerCollection;
-	class XMPPLayer;
-
-	class Session : public boost::enable_shared_from_this<Session> {
-		public:
-			enum SessionError {
-				ConnectionReadError,
-				ConnectionWriteError,
-				XMLError,
-				AuthenticationFailedError,
-				NoSupportedAuthMechanismsError,
-				UnexpectedElementError,
-				ResourceBindError,
-				SessionStartError,
-				TLSError,
-				ClientCertificateLoadError,
-				ClientCertificateError
-			};
-
-			Session(
-					boost::shared_ptr<Connection> connection,
-					PayloadParserFactoryCollection* payloadParserFactories, 
-					PayloadSerializerCollection* payloadSerializers);
-			virtual ~Session();
-
-			void startSession();
-			void finishSession();
-
-			void sendElement(boost::shared_ptr<Element>);
-
-			const JID& getLocalJID() const {
-				return localJID;
-			}
-
-			const JID& getRemoteJID() const {
-				return remoteJID;
-			}
-
-			boost::signal<void (boost::shared_ptr<Element>)> onElementReceived;
-			boost::signal<void (const boost::optional<SessionError>&)> onSessionFinished;
-			boost::signal<void (const ByteArray&)> onDataWritten;
-			boost::signal<void (const ByteArray&)> onDataRead;
-
-		protected:
-			void setRemoteJID(const JID& j) {
-				remoteJID = j;
-			}
-
-			void setLocalJID(const JID& j) {
-				localJID = j;
-			}
-
-			void finishSession(const SessionError&);
-
-			virtual void handleSessionStarted() {}
-			virtual void handleSessionFinished(const boost::optional<SessionError>&) {}
-			virtual void handleElement(boost::shared_ptr<Element>) = 0;
-			virtual void handleStreamStart(const ProtocolHeader&) = 0;
-
-			void initializeStreamStack();
-
-			boost::shared_ptr<XMPPLayer> getXMPPLayer() const {
-				return xmppLayer;
-			}
-
-			StreamStack* getStreamStack() const {
-				return streamStack;
-			}
-
-			void setFinished();
-
-		private:
-			void handleDisconnected(const boost::optional<Connection::Error>& error);
-
-		private:
-			JID localJID;
-			JID remoteJID;
-			boost::shared_ptr<Connection> connection;
-			PayloadParserFactoryCollection* payloadParserFactories;
-			PayloadSerializerCollection* payloadSerializers;
-			boost::shared_ptr<XMPPLayer> xmppLayer;
-			boost::shared_ptr<ConnectionLayer> connectionLayer;
-			StreamStack* streamStack;
-			bool finishing;
-	};
-}
diff --git a/Swiften/Session/SessionStream.cpp b/Swiften/Session/SessionStream.cpp
deleted file mode 100644
index 1d73d0f..0000000
--- a/Swiften/Session/SessionStream.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/Session/SessionStream.h"
-
-namespace Swift {
-
-SessionStream::~SessionStream() {
-}
-
-};
diff --git a/Swiften/Session/SessionStream.h b/Swiften/Session/SessionStream.h
deleted file mode 100644
index 8c64ccf..0000000
--- a/Swiften/Session/SessionStream.h
+++ /dev/null
@@ -1,69 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/Elements/ProtocolHeader.h"
-#include "Swiften/Elements/Element.h"
-#include "Swiften/Base/Error.h"
-#include "Swiften/TLS/PKCS12Certificate.h"
-
-namespace Swift {
-	class SessionStream {
-		public:
-			class Error : public Swift::Error {
-				public:
-					enum Type {
-						ParseError,
-						TLSError,
-						InvalidTLSCertificateError,
-						ConnectionReadError,
-						ConnectionWriteError
-					};
-
-					Error(Type type) : type(type) {}
-
-					Type type;
-			};
-
-			virtual ~SessionStream();
-
-			virtual bool isAvailable() = 0;
-
-			virtual void writeHeader(const ProtocolHeader& header) = 0;
-			virtual void writeFooter() = 0;
-			virtual void writeElement(boost::shared_ptr<Element>) = 0;
-
-			virtual void addZLibCompression() = 0;
-
-			virtual bool supportsTLSEncryption() = 0;
-			virtual void addTLSEncryption() = 0;
-			virtual void setWhitespacePingEnabled(bool enabled) = 0;
-
-			virtual void resetXMPPParser() = 0;
-
-			void setTLSCertificate(const PKCS12Certificate& cert) {
-				certificate = cert;
-			}
-
-			virtual bool hasTLSCertificate() {
-				return !certificate.isNull();
-			}
-
-
-			boost::signal<void (const ProtocolHeader&)> onStreamStartReceived;
-			boost::signal<void (boost::shared_ptr<Element>)> onElementReceived;
-			boost::signal<void (boost::shared_ptr<Error>)> onError;
-			boost::signal<void ()> onTLSEncrypted;
-			boost::signal<void (const String&)> onDataRead;
-			boost::signal<void (const String&)> onDataWritten;
-
-		protected:
-			const PKCS12Certificate& getTLSCertificate() const {
-				return certificate;
-			}
-
-		private:
-			PKCS12Certificate certificate;
-	};
-}
diff --git a/Swiften/Session/SessionTracer.h b/Swiften/Session/SessionTracer.h
deleted file mode 100644
index 29a07e0..0000000
--- a/Swiften/Session/SessionTracer.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#pragma once
-
-#include <iostream>
-
-#include "Swiften/Session/Session.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class SessionTracer {
-		public:
-			SessionTracer(boost::shared_ptr<Session> session) : session(session) {
-				session->onDataRead.connect(boost::bind(&SessionTracer::printData, this, '<', _1));
-				session->onDataWritten.connect(boost::bind(&SessionTracer::printData, this, '>', _1));
-			}
-
-		private:
-			void printData(char direction, const ByteArray& data) {
-				std::cerr << direction << direction << " " << session->getLocalJID() << " ";
-				for (unsigned int i = 0; i < 72 - session->getLocalJID().toString().getLength() - session->getRemoteJID().toString().getLength(); ++i) {
-					std::cerr << direction;
-				}
-				std::cerr << " " << session->getRemoteJID()<< " " << direction << direction << std::endl;
-				std::cerr << String(data.getData(), data.getSize()) << std::endl;
-			}
-
-			boost::shared_ptr<Session> session;
-	};
-}
diff --git a/Swiften/Settings/SettingsProvider.h b/Swiften/Settings/SettingsProvider.h
deleted file mode 100644
index d07e790..0000000
--- a/Swiften/Settings/SettingsProvider.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef SWIFTEN_SettingsProvider_H
-#define SWIFTEN_SettingsProvider_H
-
-#include "Swiften/Base/String.h"
-
-#include <vector>
-
-namespace Swift {
-
-class SettingsProvider {
-	public:
-		virtual ~SettingsProvider() {}
-		virtual String getStringSetting(const String &settingPath) = 0;
-		virtual void storeString(const String &settingPath, const String &settingValue) = 0;
-		virtual bool getBoolSetting(const String &settingPath, bool defaultValue) = 0;
-		virtual void storeBool(const String &settingPath, bool settingValue) = 0;
-		virtual std::vector<String> getAvailableProfiles() = 0;
-		virtual void createProfile(const String& profile) = 0;
-};
-
-}
-#endif
-
-
diff --git a/Swiften/StreamStack/CompressionLayer.h b/Swiften/StreamStack/CompressionLayer.h
deleted file mode 100644
index 6a8f2b3..0000000
--- a/Swiften/StreamStack/CompressionLayer.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef SWIFTEN_COMPRESSIONLAYER_H
-#define SWIFTEN_COMPRESSIONLAYER_H
-
-#include <boost/noncopyable.hpp>
-#include <boost/signal.hpp>
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/StreamStack/StreamLayer.h"
-#include "Swiften/Compress/ZLibException.h"
-#include "Swiften/Compress/ZLibCompressor.h"
-#include "Swiften/Compress/ZLibDecompressor.h"
-
-namespace Swift {
-	class ZLibCompressor;
-	class ZLibDecompressor;
-
-	class CompressionLayer : public StreamLayer, boost::noncopyable {
-		public:
-			CompressionLayer() {}
-
-			virtual void writeData(const ByteArray& data) {
-				try {
-					onWriteData(compressor_.process(data));
-				}
-				catch (const ZLibException& e) {
-					onError();
-				}
-			}
-
-			virtual void handleDataRead(const ByteArray& data) {
-				try {
-					onDataRead(decompressor_.process(data));
-				}
-				catch (const ZLibException& e) {
-					onError();
-				}
-			}
-
-		public:
-			boost::signal<void ()> onError;
-
-		private:
-			ZLibCompressor compressor_;
-			ZLibDecompressor decompressor_;
-	};
-}
-
-#endif
diff --git a/Swiften/StreamStack/ConnectionLayer.h b/Swiften/StreamStack/ConnectionLayer.h
deleted file mode 100644
index 7688f78..0000000
--- a/Swiften/StreamStack/ConnectionLayer.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-#include <boost/signal.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/StreamStack/LowLayer.h"
-#include "Swiften/Network/Connection.h"
-
-namespace Swift {
-	class ConnectionLayer : public LowLayer {
-		public:
-			ConnectionLayer(boost::shared_ptr<Connection> connection) : connection(connection) {
-				connection->onDataRead.connect(onDataRead);
-			}
-
-			void writeData(const ByteArray& data) {
-				connection->write(data);
-			}
-
-		private:
-			boost::shared_ptr<Connection> connection;
-	};
-}
diff --git a/Swiften/StreamStack/HighLayer.cpp b/Swiften/StreamStack/HighLayer.cpp
deleted file mode 100644
index 2f5e1df..0000000
--- a/Swiften/StreamStack/HighLayer.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/StreamStack/HighLayer.h"
-
-namespace Swift {
-
-HighLayer::~HighLayer() {
-}
-
-}
diff --git a/Swiften/StreamStack/HighLayer.h b/Swiften/StreamStack/HighLayer.h
deleted file mode 100644
index bd6c6e6..0000000
--- a/Swiften/StreamStack/HighLayer.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef SWIFTEN_HIGHLAYER_H
-#define SWIFTEN_HIGHLAYER_H
-
-#include <boost/signal.hpp>
-
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class HighLayer {
-		public:
-			virtual ~HighLayer();
-
-			virtual void handleDataRead(const ByteArray& data) = 0;
-
-			boost::signal<void (const ByteArray&)> onWriteData;
-	};
-}
-
-#endif
diff --git a/Swiften/StreamStack/LowLayer.cpp b/Swiften/StreamStack/LowLayer.cpp
deleted file mode 100644
index 24aa7a2..0000000
--- a/Swiften/StreamStack/LowLayer.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/StreamStack/LowLayer.h"
-
-namespace Swift {
-
-LowLayer::~LowLayer() {
-}
-
-}
diff --git a/Swiften/StreamStack/LowLayer.h b/Swiften/StreamStack/LowLayer.h
deleted file mode 100644
index 763cfc4..0000000
--- a/Swiften/StreamStack/LowLayer.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef SWIFTEN_LOWLAYER_H
-#define SWIFTEN_LOWLAYER_H
-
-#include <boost/signal.hpp>
-
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class LowLayer {
-		public:
-			virtual ~LowLayer();
-
-			virtual void writeData(const ByteArray& data) = 0;
-
-			boost::signal<void (const ByteArray&)> onDataRead;
-	};
-}
-
-#endif
diff --git a/Swiften/StreamStack/OpenSSLLayer.cpp b/Swiften/StreamStack/OpenSSLLayer.cpp
deleted file mode 100644
index da93e4e..0000000
--- a/Swiften/StreamStack/OpenSSLLayer.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include "Swiften/StreamStack/OpenSSLLayer.h"
-
-namespace Swift {
-
-OpenSSLLayer::OpenSSLLayer() {
-	context_.onDataForNetwork.connect(onWriteData);
-	context_.onDataForApplication.connect(onDataRead);
-	context_.onConnected.connect(onConnected);
-	context_.onError.connect(onError);
-}
-
-void OpenSSLLayer::connect() {
-	context_.connect();
-}
-
-void OpenSSLLayer::writeData(const ByteArray& data) {
-	context_.handleDataFromApplication(data);
-}
-
-void OpenSSLLayer::handleDataRead(const ByteArray& data) {
-	context_.handleDataFromNetwork(data);
-}
-
-bool OpenSSLLayer::setClientCertificate(const PKCS12Certificate& certificate) {
-	return context_.setClientCertificate(certificate);
-}
-
-}
diff --git a/Swiften/StreamStack/OpenSSLLayer.h b/Swiften/StreamStack/OpenSSLLayer.h
deleted file mode 100644
index 615c75e..0000000
--- a/Swiften/StreamStack/OpenSSLLayer.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef SWIFTEN_OpenSSLLayer_H
-#define SWIFTEN_OpenSSLLayer_H
-
-#include <boost/noncopyable.hpp>
-#include <boost/signal.hpp>
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/StreamStack/TLSLayer.h"
-#include "Swiften/TLS/OpenSSL/OpenSSLContext.h"
-
-namespace Swift {
-	class OpenSSLLayer : public TLSLayer, boost::noncopyable {
-		public:
-			OpenSSLLayer();
-
-			virtual void connect();
-			virtual bool setClientCertificate(const PKCS12Certificate&);
-
-			virtual void writeData(const ByteArray& data);
-			virtual void handleDataRead(const ByteArray& data);
-
-		private:
-			OpenSSLContext context_;
-	};
-}
-
-#endif
diff --git a/Swiften/StreamStack/PlatformTLSLayerFactory.cpp b/Swiften/StreamStack/PlatformTLSLayerFactory.cpp
deleted file mode 100644
index cdcb8a7..0000000
--- a/Swiften/StreamStack/PlatformTLSLayerFactory.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "Swiften/StreamStack/PlatformTLSLayerFactory.h"
-
-#include <cassert>
-
-#ifdef HAVE_OPENSSL
-#include "Swiften/StreamStack/OpenSSLLayer.h"
-#endif
-
-namespace Swift {
-
-PlatformTLSLayerFactory::PlatformTLSLayerFactory() {
-}
-
-bool PlatformTLSLayerFactory::canCreate() const {
-#ifdef HAVE_OPENSSL
-	return true;
-#else
-	return false;
-#endif
-}
-
-boost::shared_ptr<TLSLayer> PlatformTLSLayerFactory::createTLSLayer() {
-#ifdef HAVE_OPENSSL
-	return boost::shared_ptr<TLSLayer>(new OpenSSLLayer());
-#else
-	assert(false);
-	return boost::shared_ptr<TLSLayer>();
-#endif
-}
-
-}
diff --git a/Swiften/StreamStack/PlatformTLSLayerFactory.h b/Swiften/StreamStack/PlatformTLSLayerFactory.h
deleted file mode 100644
index 6c343b0..0000000
--- a/Swiften/StreamStack/PlatformTLSLayerFactory.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include "Swiften/StreamStack/TLSLayerFactory.h"
-
-namespace Swift {
-	class PlatformTLSLayerFactory : public TLSLayerFactory {
-		public:
-			PlatformTLSLayerFactory();
-
-			bool canCreate() const;
-			virtual boost::shared_ptr<TLSLayer> createTLSLayer();
-	};
-}
diff --git a/Swiften/StreamStack/SConscript b/Swiften/StreamStack/SConscript
deleted file mode 100644
index 449a39b..0000000
--- a/Swiften/StreamStack/SConscript
+++ /dev/null
@@ -1,21 +0,0 @@
-Import("swiften_env")
-
-myenv = swiften_env.Clone()
-myenv.MergeFlags(swiften_env["OPENSSL_FLAGS"])
-
-sources = [
-		"HighLayer.cpp",
-		"LowLayer.cpp",
-		"PlatformTLSLayerFactory.cpp",
-		"StreamStack.cpp",
-		"TLSLayerFactory.cpp",
-		"WhitespacePingLayer.cpp",
-		"XMPPLayer.cpp",
-	]
-
-if myenv.get("HAVE_OPENSSL", 0) :
-	myenv.Append(CPPDEFINES = "HAVE_OPENSSL")
-	sources += ["OpenSSLLayer.cpp"]
-
-objects = myenv.StaticObject(sources)
-swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/StreamStack/StreamLayer.h b/Swiften/StreamStack/StreamLayer.h
deleted file mode 100644
index 6ea2051..0000000
--- a/Swiften/StreamStack/StreamLayer.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef SWIFTEN_STREAMLAYER_H
-#define SWIFTEN_STREAMLAYER_H
-
-#include <boost/signal.hpp>
-
-#include "Swiften/StreamStack/LowLayer.h"
-#include "Swiften/StreamStack/HighLayer.h"
-
-namespace Swift {
-	class StreamLayer : public LowLayer, public HighLayer {
-		public:
-			StreamLayer() {}
-	};
-}
-
-#endif
diff --git a/Swiften/StreamStack/StreamStack.cpp b/Swiften/StreamStack/StreamStack.cpp
deleted file mode 100644
index 9eb9b4e..0000000
--- a/Swiften/StreamStack/StreamStack.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "Swiften/StreamStack/StreamStack.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/Base/foreach.h"
-#include "Swiften/StreamStack/XMPPLayer.h"
-#include "Swiften/StreamStack/LowLayer.h"
-#include "Swiften/StreamStack/StreamLayer.h"
-
-namespace Swift {
-
-StreamStack::StreamStack(boost::shared_ptr<XMPPLayer> xmppLayer, boost::shared_ptr<LowLayer> physicalLayer) : xmppLayer_(xmppLayer), physicalLayer_(physicalLayer) {
-	xmppReadSlotConnection_ = physicalLayer_->onDataRead.connect(boost::bind(&XMPPLayer::parseData, xmppLayer_, _1));
-	xmppWriteSignalConnection_ = xmppLayer_->onWriteData.connect(boost::bind(&LowLayer::writeData, physicalLayer_, _1));
-}
-
-StreamStack::~StreamStack() {
-	// Disconnect the write signal connections to break cyclic signal 
-	// dependencies. The read signal connections have
-	// to remain, since these can be reached from the main event loop.
-	xmppWriteSignalConnection_.disconnect();
-	foreach(const boost::bsignals::connection& connection, writeSignalConnections_) {
-		connection.disconnect();
-	}
-}
-
-void StreamStack::addLayer(boost::shared_ptr<StreamLayer> newLayer) {
-	xmppReadSlotConnection_.disconnect();
-	xmppWriteSignalConnection_.disconnect();
-
-	boost::shared_ptr<LowLayer> lowLayer = (layers_.empty() ? physicalLayer_ : *layers_.rbegin());
-
-	lowLayer->onDataRead.connect(boost::bind(&HighLayer::handleDataRead, newLayer, _1), boost::bsignals::at_front);
-	writeSignalConnections_.push_back(newLayer->onWriteData.connect(boost::bind(&LowLayer::writeData, lowLayer, _1), boost::bsignals::at_front));
-	xmppWriteSignalConnection_ = xmppLayer_->onWriteData.connect(boost::bind(&LowLayer::writeData, newLayer, _1), boost::bsignals::at_front);
-	xmppReadSlotConnection_ = newLayer->onDataRead.connect(boost::bind(&XMPPLayer::parseData, xmppLayer_, _1), boost::bsignals::at_front);
-	layers_.push_back(newLayer);
-}
-
-}
diff --git a/Swiften/StreamStack/StreamStack.h b/Swiften/StreamStack/StreamStack.h
deleted file mode 100644
index 87c522d..0000000
--- a/Swiften/StreamStack/StreamStack.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/signal.hpp>
-#include <vector>
-
-#include "Swiften/Elements/Stanza.h"
-#include "Swiften/Base/foreach.h"
-
-namespace Swift {
-	class XMPPLayer;
-	class LowLayer;
-	class StreamLayer;
-
-	class StreamStack {
-		public:
-			StreamStack(boost::shared_ptr<XMPPLayer> xmppLayer, boost::shared_ptr<LowLayer> physicalLayer);
-			~StreamStack();
-
-			void addLayer(boost::shared_ptr<StreamLayer>);
-
-			boost::shared_ptr<XMPPLayer> getXMPPLayer() const {
-				return xmppLayer_;
-			}
-
-			template<typename T> boost::shared_ptr<T> getLayer() {
-				foreach(const boost::shared_ptr<StreamLayer>& streamLayer, layers_) {
-					boost::shared_ptr<T> layer = boost::dynamic_pointer_cast<T>(streamLayer);
-					if (layer) {
-						return layer;
-					}
-				}
-				return boost::shared_ptr<T>();
-			}
-
-		private:
-			boost::shared_ptr<XMPPLayer> xmppLayer_;
-			boost::shared_ptr<LowLayer> physicalLayer_;
-			std::vector< boost::shared_ptr<StreamLayer> > layers_;
-			boost::bsignals::connection xmppReadSlotConnection_;
-			boost::bsignals::connection xmppWriteSignalConnection_;
-			std::vector< boost::bsignals::connection > writeSignalConnections_;
-	};
-}
diff --git a/Swiften/StreamStack/TLSLayer.h b/Swiften/StreamStack/TLSLayer.h
deleted file mode 100644
index 490e16c..0000000
--- a/Swiften/StreamStack/TLSLayer.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef SWIFTEN_TLSLayer_H
-#define SWIFTEN_TLSLayer_H
-
-#include "Swiften/StreamStack/StreamLayer.h"
-#include "Swiften/TLS/PKCS12Certificate.h"
-
-namespace Swift {
-	class TLSLayer : public StreamLayer {
-		public:
-			virtual void connect() = 0;
-			virtual bool setClientCertificate(const PKCS12Certificate&) = 0;
-
-		public:
-			boost::signal<void ()> onError;
-			boost::signal<void ()> onConnected;
-	};
-}
-
-#endif
diff --git a/Swiften/StreamStack/TLSLayerFactory.cpp b/Swiften/StreamStack/TLSLayerFactory.cpp
deleted file mode 100644
index 15de455..0000000
--- a/Swiften/StreamStack/TLSLayerFactory.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "Swiften/StreamStack/TLSLayerFactory.h"
-
-namespace Swift {
-
-TLSLayerFactory::~TLSLayerFactory() {
-}
-
-}
diff --git a/Swiften/StreamStack/TLSLayerFactory.h b/Swiften/StreamStack/TLSLayerFactory.h
deleted file mode 100644
index 1b0bfc1..0000000
--- a/Swiften/StreamStack/TLSLayerFactory.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-
-namespace Swift {
-	class TLSLayer;
-
-	class TLSLayerFactory {
-		public:
-			virtual ~TLSLayerFactory();
-			virtual bool canCreate() const = 0;
-
-			virtual boost::shared_ptr<TLSLayer> createTLSLayer() = 0;
-	};
-}
diff --git a/Swiften/StreamStack/UnitTest/StreamStackTest.cpp b/Swiften/StreamStack/UnitTest/StreamStackTest.cpp
deleted file mode 100644
index 6b97c0d..0000000
--- a/Swiften/StreamStack/UnitTest/StreamStackTest.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-#include <vector>
-#include <boost/bind.hpp>
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/StreamStack/StreamStack.h"
-#include "Swiften/StreamStack/LowLayer.h"
-#include "Swiften/StreamStack/XMPPLayer.h"
-#include "Swiften/StreamStack/StreamLayer.h"
-#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h"
-#include "Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h"
-
-using namespace Swift;
-
-class StreamStackTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(StreamStackTest);
-		CPPUNIT_TEST(testWriteData_NoIntermediateStreamStack);
-		CPPUNIT_TEST(testWriteData_OneIntermediateStream);
-		CPPUNIT_TEST(testWriteData_TwoIntermediateStreamStack);
-		CPPUNIT_TEST(testReadData_NoIntermediateStreamStack);
-		CPPUNIT_TEST(testReadData_OneIntermediateStream);
-		CPPUNIT_TEST(testReadData_TwoIntermediateStreamStack);
-		CPPUNIT_TEST(testAddLayer_ExistingOnWriteDataSlot);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		StreamStackTest() {}
-
-		void setUp() {
-			physicalStream_ = boost::shared_ptr<TestLowLayer>(new TestLowLayer());
-			xmppStream_ = boost::shared_ptr<XMPPLayer>(new XMPPLayer(&parserFactories_, &serializers_));
-			elementsReceived_ = 0;
-			dataWriteReceived_ = 0;
-		}
-
-		void tearDown() {
-		}
-
-		void testWriteData_NoIntermediateStreamStack() {
-			StreamStack testling(xmppStream_, physicalStream_);
-			
-			xmppStream_->writeData("foo");
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), physicalStream_->data_.size());
-			CPPUNIT_ASSERT_EQUAL(ByteArray("foo"), physicalStream_->data_[0]);
-		}
-
-		void testWriteData_OneIntermediateStream() {
-			StreamStack testling(xmppStream_, physicalStream_);
-			boost::shared_ptr<MyStreamLayer> xStream(new MyStreamLayer("X"));
-			testling.addLayer(xStream);
-
-			xmppStream_->writeData("foo");
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), physicalStream_->data_.size());
-			CPPUNIT_ASSERT_EQUAL(ByteArray("Xfoo"), physicalStream_->data_[0]);
-		}
-
-		void testWriteData_TwoIntermediateStreamStack() {
-			StreamStack testling(xmppStream_, physicalStream_);
-			boost::shared_ptr<MyStreamLayer> xStream(new MyStreamLayer("X"));
-			boost::shared_ptr<MyStreamLayer> yStream(new MyStreamLayer("Y"));
-			testling.addLayer(xStream);
-			testling.addLayer(yStream);
-
-			xmppStream_->writeData("foo");
-
-			CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), physicalStream_->data_.size());
-			CPPUNIT_ASSERT_EQUAL(ByteArray("XYfoo"), physicalStream_->data_[0]);
-		}
-
-		void testReadData_NoIntermediateStreamStack() {
-			StreamStack testling(xmppStream_, physicalStream_);
-			xmppStream_->onElement.connect(boost::bind(&StreamStackTest::handleElement, this, _1));
-			
-			physicalStream_->onDataRead(ByteArray("<stream:stream xmlns:stream='http://etherx.jabber.org/streams'><presence/>"));
-
-			CPPUNIT_ASSERT_EQUAL(1, elementsReceived_);
-		}
-
-		void testReadData_OneIntermediateStream() {
-			StreamStack testling(xmppStream_, physicalStream_);
-			xmppStream_->onElement.connect(boost::bind(&StreamStackTest::handleElement, this, _1));
-			boost::shared_ptr<MyStreamLayer> xStream(new MyStreamLayer("<"));
-			testling.addLayer(xStream);
-
-			physicalStream_->onDataRead(ByteArray("stream:stream xmlns:stream='http://etherx.jabber.org/streams'><presence/>"));
-
-			CPPUNIT_ASSERT_EQUAL(1, elementsReceived_);
-		}
-
-		void testReadData_TwoIntermediateStreamStack() {
-			StreamStack testling(xmppStream_, physicalStream_);
-			xmppStream_->onElement.connect(boost::bind(&StreamStackTest::handleElement, this, _1));
-			boost::shared_ptr<MyStreamLayer> xStream(new MyStreamLayer("s"));
-			boost::shared_ptr<MyStreamLayer> yStream(new MyStreamLayer("<"));
-			testling.addLayer(xStream);
-			testling.addLayer(yStream);
-
-			physicalStream_->onDataRead(ByteArray("tream:stream xmlns:stream='http://etherx.jabber.org/streams'><presence/>"));
-
-			CPPUNIT_ASSERT_EQUAL(1, elementsReceived_);
-		}
-
-		void testAddLayer_ExistingOnWriteDataSlot() {
-			StreamStack testling(xmppStream_, physicalStream_);
-			xmppStream_->onWriteData.connect(boost::bind(&StreamStackTest::handleWriteData, this, _1));
-			boost::shared_ptr<MyStreamLayer> xStream(new MyStreamLayer("X"));
-			testling.addLayer(xStream);
-
-			xmppStream_->writeData("foo");
-
-			CPPUNIT_ASSERT_EQUAL(1, dataWriteReceived_);
-		}
-
-		void handleElement(boost::shared_ptr<Element>) {
-			++elementsReceived_;
-		}
-
-		void handleWriteData(ByteArray) {
-			++dataWriteReceived_;
-		}
-
-	private:
-		class MyStreamLayer : public StreamLayer {
-			public:
-				MyStreamLayer(const String& prepend) : prepend_(prepend) {
-				}
-
-				virtual void writeData(const ByteArray& data) {
-					onWriteData(ByteArray(prepend_) + data);
-				}
-
-				virtual void handleDataRead(const ByteArray& data) {
-					onDataRead(ByteArray(prepend_) + data);
-				}
-
-			private:
-				String prepend_;
-		};
-
-		class TestLowLayer : public LowLayer {
-			public:
-				TestLowLayer() {
-				}
-
-				virtual void writeData(const ByteArray& data) {
-					data_.push_back(data);
-				}
-
-				std::vector<ByteArray> data_;
-		};
-	
-	private:
-		FullPayloadParserFactoryCollection parserFactories_;
-		FullPayloadSerializerCollection serializers_;
-		boost::shared_ptr<TestLowLayer> physicalStream_;
-		boost::shared_ptr<XMPPLayer> xmppStream_;
-		int elementsReceived_;
-		int dataWriteReceived_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(StreamStackTest);
diff --git a/Swiften/StreamStack/UnitTest/XMPPLayerTest.cpp b/Swiften/StreamStack/UnitTest/XMPPLayerTest.cpp
deleted file mode 100644
index e284ba9..0000000
--- a/Swiften/StreamStack/UnitTest/XMPPLayerTest.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-#include <vector>
-#include <boost/bind.hpp>
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Elements/ProtocolHeader.h"
-#include "Swiften/Elements/Presence.h"
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/StreamStack/XMPPLayer.h"
-#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h"
-#include "Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h"
-
-using namespace Swift;
-
-class XMPPLayerTest : public CppUnit::TestFixture
-{
-		CPPUNIT_TEST_SUITE(XMPPLayerTest);
-		CPPUNIT_TEST(testParseData_Error);
-		CPPUNIT_TEST(testResetParser);
-		CPPUNIT_TEST(testResetParser_FromSlot);
-		CPPUNIT_TEST(testWriteHeader);
-		CPPUNIT_TEST(testWriteElement);
-		CPPUNIT_TEST(testWriteFooter);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		XMPPLayerTest() {}
-
-		void setUp() {
-			testling_ = new XMPPLayer(&parserFactories_, &serializers_);
-			elementsReceived_ = 0;
-			dataReceived_ = "";
-			errorReceived_ = 0;
-		}
-
-		void tearDown() {
-			delete testling_;
-		}
-
-		void testParseData_Error() {
-			testling_->onError.connect(boost::bind(&XMPPLayerTest::handleError, this));
-
-			testling_->parseData("<iq>");
-			
-			CPPUNIT_ASSERT_EQUAL(1, errorReceived_);
-		}
-
-		void testResetParser() {
-			testling_->onElement.connect(boost::bind(&XMPPLayerTest::handleElement, this, _1));
-			testling_->onError.connect(boost::bind(&XMPPLayerTest::handleError, this));
-
-			testling_->parseData("<stream:stream to=\"example.com\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" >");
-			testling_->resetParser();
-			testling_->parseData("<stream:stream to=\"example.com\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" >");
-			testling_->parseData("<presence/>");
-
-			CPPUNIT_ASSERT_EQUAL(1, elementsReceived_);
-			CPPUNIT_ASSERT_EQUAL(0, errorReceived_);
-		}
-
-		void testResetParser_FromSlot() {
-			testling_->onElement.connect(boost::bind(&XMPPLayerTest::handleElementAndReset, this, _1));
-			testling_->parseData("<stream:stream to=\"example.com\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" ><presence/>");
-			testling_->parseData("<stream:stream to=\"example.com\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" ><presence/>");
-
-			CPPUNIT_ASSERT_EQUAL(2, elementsReceived_);
-			CPPUNIT_ASSERT_EQUAL(0, errorReceived_);
-		}
-
-		void testWriteHeader() {
-			testling_->onWriteData.connect(boost::bind(&XMPPLayerTest::handleWriteData, this, _1));
-			ProtocolHeader header;
-			header.setTo("example.com");
-			testling_->writeHeader(header);
-
-			CPPUNIT_ASSERT_EQUAL(String("<?xml version=\"1.0\"?><stream:stream xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" to=\"example.com\" version=\"1.0\">"), dataReceived_);
-		}
-
-		void testWriteElement() {
-			testling_->onWriteData.connect(boost::bind(&XMPPLayerTest::handleWriteData, this, _1));
-			testling_->writeElement(boost::shared_ptr<Presence>(new Presence()));
-
-			CPPUNIT_ASSERT_EQUAL(String("<presence/>"), dataReceived_);
-		}
-
-		void testWriteFooter() {
-			testling_->onWriteData.connect(boost::bind(&XMPPLayerTest::handleWriteData, this, _1));
-			testling_->writeFooter();
-
-			CPPUNIT_ASSERT_EQUAL(String("</stream:stream>"), dataReceived_);
-		}
-
-		void handleElement(boost::shared_ptr<Element>) {
-			++elementsReceived_;
-		}
-
-		void handleElementAndReset(boost::shared_ptr<Element>) {
-			++elementsReceived_;
-			testling_->resetParser();
-		}
-
-		void handleWriteData(ByteArray ba) {
-			dataReceived_ += std::string(ba.getData(), ba.getSize());
-		}
-
-		void handleError() {
-			++errorReceived_;
-		}
-
-	private:
-		FullPayloadParserFactoryCollection parserFactories_;
-		FullPayloadSerializerCollection serializers_;
-		XMPPLayer* testling_;
-		int elementsReceived_;
-		String dataReceived_;
-		int errorReceived_;
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(XMPPLayerTest);
diff --git a/Swiften/StreamStack/WhitespacePingLayer.cpp b/Swiften/StreamStack/WhitespacePingLayer.cpp
deleted file mode 100644
index 5c1eb00..0000000
--- a/Swiften/StreamStack/WhitespacePingLayer.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "Swiften/StreamStack/WhitespacePingLayer.h"
-
-#include <boost/bind.hpp>
-
-#include "Swiften/Network/TimerFactory.h"
-#include "Swiften/Network/Timer.h"
-
-namespace Swift {
-
-static const int TIMEOUT_MILLISECONDS = 60000;
-
-WhitespacePingLayer::WhitespacePingLayer(TimerFactory* timerFactory) : isActive(false) {
-	timer = timerFactory->createTimer(TIMEOUT_MILLISECONDS);
-	timer->onTick.connect(boost::bind(&WhitespacePingLayer::handleTimerTick, this));
-}
-
-void WhitespacePingLayer::writeData(const ByteArray& data) {
-	onWriteData(data);
-}
-
-void WhitespacePingLayer::handleDataRead(const ByteArray& data) {
-	onDataRead(data);
-}
-
-void WhitespacePingLayer::handleTimerTick() {
-	onWriteData(" ");
-}
-
-void WhitespacePingLayer::setActive() {
-	isActive = true;
-	timer->start();
-}
-
-void WhitespacePingLayer::setInactive() {
-	timer->stop();
-	isActive = false;
-}
-
-}
diff --git a/Swiften/StreamStack/WhitespacePingLayer.h b/Swiften/StreamStack/WhitespacePingLayer.h
deleted file mode 100644
index 18ea39a..0000000
--- a/Swiften/StreamStack/WhitespacePingLayer.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include <boost/noncopyable.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include "Swiften/StreamStack/StreamLayer.h"
-
-namespace Swift {
-	class Timer;
-	class TimerFactory;
-
-	class WhitespacePingLayer : public StreamLayer, boost::noncopyable {
-		public:
-			WhitespacePingLayer(TimerFactory* timerFactory);
-
-			void setActive();
-			void setInactive();
-			void writeData(const ByteArray& data);
-			void handleDataRead(const ByteArray& data);
-
-			bool getIsActive() const {
-				return isActive;
-			}
-
-		private:
-			void handleTimerTick();
-
-		private:
-			bool isActive;
-			boost::shared_ptr<Timer> timer;
-	};
-}
diff --git a/Swiften/StreamStack/XMPPLayer.cpp b/Swiften/StreamStack/XMPPLayer.cpp
deleted file mode 100644
index b87cb4a..0000000
--- a/Swiften/StreamStack/XMPPLayer.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-#include "Swiften/StreamStack/XMPPLayer.h"
-#include "Swiften/Parser/XMPPParser.h"
-#include "Swiften/Serializer/XMPPSerializer.h"
-#include "Swiften/Elements/ProtocolHeader.h"
-
-namespace Swift {
-
-XMPPLayer::XMPPLayer(
-		PayloadParserFactoryCollection* payloadParserFactories,
-		PayloadSerializerCollection* payloadSerializers) : 
-			payloadParserFactories_(payloadParserFactories), 
-			payloadSerializers_(payloadSerializers),
-			resetParserAfterParse_(false),
-			inParser_(false) {
-	xmppParser_ = new XMPPParser(this, payloadParserFactories_);
-	xmppSerializer_ = new XMPPSerializer(payloadSerializers_);
-}
-
-XMPPLayer::~XMPPLayer() {
-	delete xmppSerializer_;
-	delete xmppParser_;
-}
-
-void XMPPLayer::writeHeader(const ProtocolHeader& header) {
-	onWriteData(ByteArray(xmppSerializer_->serializeHeader(header)));
-}
-
-void XMPPLayer::writeFooter() {
-	onWriteData(ByteArray(xmppSerializer_->serializeFooter()));
-}
-
-void XMPPLayer::writeElement(boost::shared_ptr<Element> element) {
-	onWriteData(ByteArray(xmppSerializer_->serializeElement(element)));
-}
-
-void XMPPLayer::writeData(const String& data) {
-	onWriteData(ByteArray(data));
-}
-
-void XMPPLayer::parseData(ByteArray data) {
-	onDataRead(data);
-	inParser_ = true;
-	if (!xmppParser_->parse(String(data.getData(), data.getSize()))) {
-		inParser_ = false;
-		onError();
-		return;
-	}
-	inParser_ = false;
-	if (resetParserAfterParse_) {
-		doResetParser();
-	}
-}
-
-void XMPPLayer::doResetParser() {
-	delete xmppParser_;
-	xmppParser_ = new XMPPParser(this, payloadParserFactories_);
-	resetParserAfterParse_ = false;
-}
-
-void XMPPLayer::handleStreamStart(const ProtocolHeader& header) {
-	onStreamStart(header);
-}
-
-void XMPPLayer::handleElement(boost::shared_ptr<Element> stanza) {
-	onElement(stanza);
-}
-
-void XMPPLayer::handleStreamEnd() {
-}
-
-void XMPPLayer::resetParser() {
-	if (inParser_) {
-		resetParserAfterParse_ = true;
-	}
-	else {
-		doResetParser();
-	}
-}
-
-}
diff --git a/Swiften/StreamStack/XMPPLayer.h b/Swiften/StreamStack/XMPPLayer.h
deleted file mode 100644
index 7974811..0000000
--- a/Swiften/StreamStack/XMPPLayer.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/signal.hpp>
-#include <boost/noncopyable.hpp>
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Elements/Element.h"
-#include "Swiften/Parser/XMPPParserClient.h"
-
-namespace Swift {
-	class ProtocolHeader;
-	class XMPPParser;
-	class PayloadParserFactoryCollection;
-	class XMPPSerializer;
-	class PayloadSerializerCollection;
-
-	class XMPPLayer : public XMPPParserClient, boost::noncopyable {
-		public:
-			XMPPLayer(
-					PayloadParserFactoryCollection* payloadParserFactories,
-					PayloadSerializerCollection* payloadSerializers);
-			~XMPPLayer();
-
-			void writeHeader(const ProtocolHeader& header);
-			void writeFooter();
-			void writeElement(boost::shared_ptr<Element>);
-			void writeData(const String& data);
-
-			void parseData(ByteArray data);
-			void resetParser();
-
-		public:
-			boost::signal<void (const ProtocolHeader&)> onStreamStart;
-			boost::signal<void (boost::shared_ptr<Element>)> onElement;
-			boost::signal<void (const ByteArray&)> onWriteData;
-			boost::signal<void (const ByteArray&)> onDataRead;
-			boost::signal<void ()> onError;
-
-		private:
-			void handleStreamStart(const ProtocolHeader&);
-			void handleElement(boost::shared_ptr<Element>);
-			void handleStreamEnd();
-
-			void doResetParser();
-
-		private:
-			PayloadParserFactoryCollection* payloadParserFactories_;
-			XMPPParser* xmppParser_;
-			PayloadSerializerCollection* payloadSerializers_;
-			XMPPSerializer* xmppSerializer_;
-			bool resetParserAfterParse_;
-			bool inParser_;
-	};
-}
diff --git a/Swiften/StringCodecs/Base64.cpp b/Swiften/StringCodecs/Base64.cpp
deleted file mode 100644
index 03b0896..0000000
--- a/Swiften/StringCodecs/Base64.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-#include <boost/numeric/conversion/cast.hpp>
-
-#include "Swiften/StringCodecs/Base64.h"
-
-namespace Swift {
-
-#pragma GCC diagnostic ignored "-Wold-style-cast"
-
-String Base64::encode(const ByteArray &s) {
-	int i;
-	int len = s.getSize();
-	char tbl[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
-	int a, b, c;
-
-	std::string p;
-	p.resize((len+2)/3*4);
-	int at = 0;
-	for( i = 0; i < len; i += 3 ) {
-		a = ((unsigned char) (s[i]) & 3) << 4;
-		if(i + 1 < len) {
-			a += (unsigned char) (s[i + 1]) >> 4;
-			b = ((unsigned char) (s[i + 1]) & 0xF) << 2;
-			if(i + 2 < len) {
-				b += (unsigned char) (s[i + 2]) >> 6;
-				c = (unsigned char) (s[i + 2]) & 0x3F;
-			}
-			else
-				c = 64;
-		}
-		else {
-			b = c = 64;
-		}
-
-		p[at++] = tbl[(unsigned char) (s[i]) >> 2];
-		p[at++] = tbl[a];
-		p[at++] = tbl[b];
-		p[at++] = tbl[c];
-	}
-	return p;
-}
-
-ByteArray Base64::decode(const String& input) {
-	String inputWithoutNewlines(input);
-	inputWithoutNewlines.removeAll('\n');
-
-	const std::string& s = inputWithoutNewlines.getUTF8String();
-	ByteArray p;
-
-	// -1 specifies invalid
-	// 64 specifies eof
-	// everything else specifies data
-
-	char tbl[] = {
-		-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-		-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-		-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,
-		52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,
-		-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,
-		15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,
-		-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
-		41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1,
-		-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-		-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-		-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-		-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-		-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-		-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-		-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-		-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-	};
-
-	// this should be a multiple of 4
-	int len = s.size();
-
-	if(len % 4) {
-		return p;
-	}
-
-	p.resize(len / 4 * 3);
-
-	int i;
-	int at = 0;
-
-	int a, b, c, d;
-	c = d = 0;
-
-	for( i = 0; i < len; i += 4 ) {
-		a = tbl[boost::numeric_cast<int>(s[i])];
-		b = tbl[boost::numeric_cast<int>(s[i + 1])];
-		c = tbl[boost::numeric_cast<int>(s[i + 2])];
-		d = tbl[boost::numeric_cast<int>(s[i + 3])];
-		if((a == 64 || b == 64) || (a < 0 || b < 0 || c < 0 || d < 0)) {
-			p.resize(0);
-			return p;
-		}
-		p[at++] = ((a & 0x3F) << 2) | ((b >> 4) & 0x03);
-		p[at++] = ((b & 0x0F) << 4) | ((c >> 2) & 0x0F);
-		p[at++] = ((c & 0x03) << 6) | ((d >> 0) & 0x3F);
-	}
-
-	if(c & 64)
-		p.resize(at - 2);
-	else if(d & 64)
-		p.resize(at - 1);
-
-	return p;
-}
-
-}
diff --git a/Swiften/StringCodecs/Base64.h b/Swiften/StringCodecs/Base64.h
deleted file mode 100644
index 1ea378c..0000000
--- a/Swiften/StringCodecs/Base64.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-
-#include <vector>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class Base64 {
-		public:
-			static String encode(const ByteArray& s);
-			static ByteArray decode(const String &s);
-	};
-}
diff --git a/Swiften/StringCodecs/HMACSHA1.cpp b/Swiften/StringCodecs/HMACSHA1.cpp
deleted file mode 100644
index f4066cb..0000000
--- a/Swiften/StringCodecs/HMACSHA1.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "Swiften/StringCodecs/HMACSHA1.h"
-
-#include <cassert>
-
-#include "Swiften/StringCodecs/SHA1.h"
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-
-static const unsigned int B = 64;
-
-ByteArray HMACSHA1::getResult(const ByteArray& key, const ByteArray& data) {
-	assert(key.getSize() <= B);
-
-	// Create the padded key
-	ByteArray paddedKey(key);
-	paddedKey.resize(B);
-	for (unsigned int i = key.getSize(); i < paddedKey.getSize(); ++i) {
-		paddedKey[i] = 0x0;
-	}
-
-	// Create the first value
-	ByteArray x(paddedKey);
-	for (unsigned int i = 0; i < x.getSize(); ++i) {
-		x[i] ^= 0x36;
-	}
-	x += data;
-
-	// Create the second value
-	ByteArray y(paddedKey);
-	for (unsigned int i = 0; i < y.getSize(); ++i) {
-		y[i] ^= 0x5c;
-	}
-	y += SHA1::getHash(x);
-
-	return SHA1::getHash(y);
-}
-
-}
diff --git a/Swiften/StringCodecs/HMACSHA1.h b/Swiften/StringCodecs/HMACSHA1.h
deleted file mode 100644
index 698e4bc..0000000
--- a/Swiften/StringCodecs/HMACSHA1.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#pragma once
-
-namespace Swift {
-	class ByteArray;
-
-	class HMACSHA1 {
-		public:
-			static ByteArray getResult(const ByteArray& key, const ByteArray& data);
-	};
-}
diff --git a/Swiften/StringCodecs/Hexify.cpp b/Swiften/StringCodecs/Hexify.cpp
deleted file mode 100644
index 504e314..0000000
--- a/Swiften/StringCodecs/Hexify.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "Swiften/StringCodecs/Hexify.h"
-
-#include <sstream>
-#include <iomanip>
-#include <boost/numeric/conversion/cast.hpp>
-
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-
-String Hexify::hexify(const ByteArray& data) {
-	std::ostringstream result;
-	result << std::hex;
-
-	for (unsigned int i = 0; i < data.getSize(); ++i) {
-		result << std::setw(2) << std::setfill('0') << boost::numeric_cast<unsigned int>(static_cast<unsigned char>(data[i]));
-	}
-	return String(result.str());
-}
-
-}
diff --git a/Swiften/StringCodecs/Hexify.h b/Swiften/StringCodecs/Hexify.h
deleted file mode 100644
index 7bd5bee..0000000
--- a/Swiften/StringCodecs/Hexify.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-
-namespace Swift {
-	class String;
-	class ByteArray;
-
-	class Hexify {
-		public:
-			static String hexify(const ByteArray& data);
-	};
-}
diff --git a/Swiften/StringCodecs/MD5.cpp b/Swiften/StringCodecs/MD5.cpp
deleted file mode 100644
index 937d128..0000000
--- a/Swiften/StringCodecs/MD5.cpp
+++ /dev/null
@@ -1,359 +0,0 @@
-/* 
- * This implementation is shamelessly copied from L. Peter Deutsch's 
- * implementation, and altered to use our own defines and datastructures. 
- * Original license below.
- */
-
-/*
-	Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
-
-	This software is provided 'as-is', without any express or implied
-	warranty.  In no event will the authors be held liable for any damages
-	arising from the use of this software.
-
-	Permission is granted to anyone to use this software for any purpose,
-	including commercial applications, and to alter it and redistribute it
-	freely, subject to the following restrictions:
-
-	1. The origin of this software must not be misrepresented; you must not
-		 claim that you wrote the original software. If you use this software
-		 in a product, an acknowledgment in the product documentation would be
-		 appreciated but is not required.
-	2. Altered source versions must be plainly marked as such, and must not be
-		 misrepresented as being the original software.
-	3. This notice may not be removed or altered from any source distribution.
-
-	L. Peter Deutsch
-	ghost@aladdin.com
- */
-
-#include "Swiften/StringCodecs/MD5.h"
-
-#include <cassert>
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/Base/Platform.h"
-
-namespace Swift {
-
-typedef unsigned char md5_byte_t; /* 8-bit byte */
-typedef unsigned int md5_word_t; /* 32-bit word */
-
-/* Define the state of the MD5 Algorithm. */
-typedef struct md5_state_s {
-		md5_word_t count[2];				/* message length in bits, lsw first */
-		md5_word_t abcd[4];					/* digest buffer */
-		md5_byte_t buf[64];					/* accumulate block */
-} md5_state_t;
-
-#define T_MASK ((md5_word_t)~0)
-#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
-#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
-#define T3		0x242070db
-#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
-#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
-#define T6		0x4787c62a
-#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
-#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
-#define T9		0x698098d8
-#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
-#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
-#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
-#define T13		 0x6b901122
-#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
-#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
-#define T16		 0x49b40821
-#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
-#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
-#define T19		 0x265e5a51
-#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
-#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
-#define T22		 0x02441453
-#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
-#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
-#define T25		 0x21e1cde6
-#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
-#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
-#define T28		 0x455a14ed
-#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
-#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
-#define T31		 0x676f02d9
-#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
-#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
-#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
-#define T35		 0x6d9d6122
-#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
-#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
-#define T38		 0x4bdecfa9
-#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
-#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
-#define T41		 0x289b7ec6
-#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
-#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
-#define T44		 0x04881d05
-#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
-#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
-#define T47		 0x1fa27cf8
-#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
-#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
-#define T50		 0x432aff97
-#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
-#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
-#define T53		 0x655b59c3
-#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
-#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
-#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
-#define T57		 0x6fa87e4f
-#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
-#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
-#define T60		 0x4e0811a1
-#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
-#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
-#define T63		 0x2ad7d2bb
-#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
-
-
-static void md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/) {
-		md5_word_t
-		a = pms->abcd[0], b = pms->abcd[1],
-		c = pms->abcd[2], d = pms->abcd[3];
-		md5_word_t t;
-#ifdef SWIFTEN_BIG_ENDIAN
-		/* Define storage only for big-endian CPUs. */
-		md5_word_t X[16];
-#else
-		/* Define storage for little-endian or both types of CPUs. */
-		md5_word_t xbuf[16];
-		const md5_word_t *X;
-#endif
-
-		{
-#ifdef SWIFTEN_LITTLE_ENDIAN
-				{
-						/*
-						 * On little-endian machines, we can process properly aligned
-						 * data without copying it.
-						 */
-						if (!((data - (const md5_byte_t *)0) & 3)) {
-								/* data are properly aligned */
-								X = (const md5_word_t *)data;
-						} else {
-								/* not aligned */
-								memcpy(xbuf, data, 64);
-								X = xbuf;
-						}
-				}
-#else
-				{
-						/*
-						 * On big-endian machines, we must arrange the bytes in the
-						 * right order.
-						 */
-						const md5_byte_t *xp = data;
-						int i;
-
-						for (i = 0; i < 16; ++i, xp += 4)
-								X[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);
-				}
-#endif
-		}
-
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
-
-		/* Round 1. */
-		/* Let [abcd k s i] denote the operation
-			 a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
-#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
-#define SET(a, b, c, d, k, s, Ti)\
-	t = a + F(b,c,d) + X[k] + Ti;\
-	a = ROTATE_LEFT(t, s) + b
-		/* Do the following 16 operations. */
-		SET(a, b, c, d,  0,  7,  T1);
-		SET(d, a, b, c,  1, 12,  T2);
-		SET(c, d, a, b,  2, 17,  T3);
-		SET(b, c, d, a,  3, 22,  T4);
-		SET(a, b, c, d,  4,  7,  T5);
-		SET(d, a, b, c,  5, 12,  T6);
-		SET(c, d, a, b,  6, 17,  T7);
-		SET(b, c, d, a,  7, 22,  T8);
-		SET(a, b, c, d,  8,  7,  T9);
-		SET(d, a, b, c,  9, 12, T10);
-		SET(c, d, a, b, 10, 17, T11);
-		SET(b, c, d, a, 11, 22, T12);
-		SET(a, b, c, d, 12,  7, T13);
-		SET(d, a, b, c, 13, 12, T14);
-		SET(c, d, a, b, 14, 17, T15);
-		SET(b, c, d, a, 15, 22, T16);
-#undef SET
-
-		 /* Round 2. */
-		 /* Let [abcd k s i] denote the operation
-					a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
-#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
-#define SET(a, b, c, d, k, s, Ti)\
-	t = a + G(b,c,d) + X[k] + Ti;\
-	a = ROTATE_LEFT(t, s) + b
-		 /* Do the following 16 operations. */
-		SET(a, b, c, d,  1,  5, T17);
-		SET(d, a, b, c,  6,  9, T18);
-		SET(c, d, a, b, 11, 14, T19);
-		SET(b, c, d, a,  0, 20, T20);
-		SET(a, b, c, d,  5,  5, T21);
-		SET(d, a, b, c, 10,  9, T22);
-		SET(c, d, a, b, 15, 14, T23);
-		SET(b, c, d, a,  4, 20, T24);
-		SET(a, b, c, d,  9,  5, T25);
-		SET(d, a, b, c, 14,  9, T26);
-		SET(c, d, a, b,  3, 14, T27);
-		SET(b, c, d, a,  8, 20, T28);
-		SET(a, b, c, d, 13,  5, T29);
-		SET(d, a, b, c,  2,  9, T30);
-		SET(c, d, a, b,  7, 14, T31);
-		SET(b, c, d, a, 12, 20, T32);
-#undef SET
-
-		 /* Round 3. */
-		 /* Let [abcd k s t] denote the operation
-					a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define SET(a, b, c, d, k, s, Ti)\
-	t = a + H(b,c,d) + X[k] + Ti;\
-	a = ROTATE_LEFT(t, s) + b
-		 /* Do the following 16 operations. */
-		SET(a, b, c, d,  5,  4, T33);
-		SET(d, a, b, c,  8, 11, T34);
-		SET(c, d, a, b, 11, 16, T35);
-		SET(b, c, d, a, 14, 23, T36);
-		SET(a, b, c, d,  1,  4, T37);
-		SET(d, a, b, c,  4, 11, T38);
-		SET(c, d, a, b,  7, 16, T39);
-		SET(b, c, d, a, 10, 23, T40);
-		SET(a, b, c, d, 13,  4, T41);
-		SET(d, a, b, c,  0, 11, T42);
-		SET(c, d, a, b,  3, 16, T43);
-		SET(b, c, d, a,  6, 23, T44);
-		SET(a, b, c, d,  9,  4, T45);
-		SET(d, a, b, c, 12, 11, T46);
-		SET(c, d, a, b, 15, 16, T47);
-		SET(b, c, d, a,  2, 23, T48);
-#undef SET
-
-		 /* Round 4. */
-		 /* Let [abcd k s t] denote the operation
-					a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
-#define I(x, y, z) ((y) ^ ((x) | ~(z)))
-#define SET(a, b, c, d, k, s, Ti)\
-	t = a + I(b,c,d) + X[k] + Ti;\
-	a = ROTATE_LEFT(t, s) + b
-		 /* Do the following 16 operations. */
-		SET(a, b, c, d,  0,  6, T49);
-		SET(d, a, b, c,  7, 10, T50);
-		SET(c, d, a, b, 14, 15, T51);
-		SET(b, c, d, a,  5, 21, T52);
-		SET(a, b, c, d, 12,  6, T53);
-		SET(d, a, b, c,  3, 10, T54);
-		SET(c, d, a, b, 10, 15, T55);
-		SET(b, c, d, a,  1, 21, T56);
-		SET(a, b, c, d,  8,  6, T57);
-		SET(d, a, b, c, 15, 10, T58);
-		SET(c, d, a, b,  6, 15, T59);
-		SET(b, c, d, a, 13, 21, T60);
-		SET(a, b, c, d,  4,  6, T61);
-		SET(d, a, b, c, 11, 10, T62);
-		SET(c, d, a, b,  2, 15, T63);
-		SET(b, c, d, a,  9, 21, T64);
-#undef SET
-
-		 /* Then perform the following additions. (That is increment each
-				of the four registers by the value it had before this block
-				was started.) */
-		pms->abcd[0] += a;
-		pms->abcd[1] += b;
-		pms->abcd[2] += c;
-		pms->abcd[3] += d;
-}
-
-void
-md5_init(md5_state_t *pms)
-{
-		pms->count[0] = pms->count[1] = 0;
-		pms->abcd[0] = 0x67452301;
-		pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
-		pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
-		pms->abcd[3] = 0x10325476;
-}
-
-void
-md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
-{
-		const md5_byte_t *p = data;
-		int left = nbytes;
-		int offset = (pms->count[0] >> 3) & 63;
-		md5_word_t nbits = (md5_word_t)(nbytes << 3);
-
-		if (nbytes <= 0)
-				return;
-
-		/* Update the message length. */
-		pms->count[1] += nbytes >> 29;
-		pms->count[0] += nbits;
-		if (pms->count[0] < nbits)
-				pms->count[1]++;
-
-		/* Process an initial partial block. */
-		if (offset) {
-				int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
-
-				memcpy(pms->buf + offset, p, copy);
-				if (offset + copy < 64)
-						return;
-				p += copy;
-				left -= copy;
-				md5_process(pms, pms->buf);
-		}
-
-		/* Process full blocks. */
-		for (; left >= 64; p += 64, left -= 64)
-				md5_process(pms, p);
-
-		/* Process a final partial block. */
-		if (left)
-				memcpy(pms->buf, p, left);
-}
-
-void
-md5_finish(md5_state_t *pms, md5_byte_t digest[16])
-{
-		static const md5_byte_t pad[64] = {
-				0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-		};
-		md5_byte_t data[8];
-		int i;
-
-		/* Save the length before padding. */
-		for (i = 0; i < 8; ++i)
-				data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
-		/* Pad to 56 bytes mod 64. */
-		md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
-		/* Append the length. */
-		md5_append(pms, data, 8);
-		for (i = 0; i < 16; ++i)
-				digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
-}
-
-ByteArray MD5::getHash(const ByteArray& data) {
-	ByteArray digest;
-	digest.resize(16);
-
-	md5_state_t state;
-	md5_init(&state);
-	md5_append(&state, reinterpret_cast<const md5_byte_t*>(data.getData()), data.getSize());
-	md5_finish(&state, reinterpret_cast<md5_byte_t*>(digest.getData()));
-
-	return digest;
-}
-
-}
diff --git a/Swiften/StringCodecs/MD5.h b/Swiften/StringCodecs/MD5.h
deleted file mode 100644
index 8773409..0000000
--- a/Swiften/StringCodecs/MD5.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#pragma once
-
-namespace Swift {
-	class ByteArray;
-
-	class MD5 {
-		public:
-			static ByteArray getHash(const ByteArray& data);
-	};
-}
diff --git a/Swiften/StringCodecs/PBKDF2.cpp b/Swiften/StringCodecs/PBKDF2.cpp
deleted file mode 100644
index c09c10e..0000000
--- a/Swiften/StringCodecs/PBKDF2.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "Swiften/StringCodecs/PBKDF2.h"
-#include "Swiften/StringCodecs/HMACSHA1.h"
-
-namespace Swift {
-
-ByteArray PBKDF2::encode(const ByteArray& password, const ByteArray& salt, int iterations) {
-	ByteArray u = HMACSHA1::getResult(password, salt + ByteArray("\0\0\0\1", 4));
-	ByteArray result = u;
-	int i = 1;
-	while (i < iterations) {
-		u = HMACSHA1::getResult(password, u);
-		for (unsigned int j = 0; j < u.getSize(); ++j) {
-			result[j] ^= u[j];
-		}
-		++i;
-	}
-	return result;
-}
-
-}
diff --git a/Swiften/StringCodecs/PBKDF2.h b/Swiften/StringCodecs/PBKDF2.h
deleted file mode 100644
index e87380d..0000000
--- a/Swiften/StringCodecs/PBKDF2.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class PBKDF2 {
-		public:
-			static ByteArray encode(const ByteArray& password, const ByteArray& salt, int iterations);
-	};
-}
diff --git a/Swiften/StringCodecs/SHA1.cpp b/Swiften/StringCodecs/SHA1.cpp
deleted file mode 100644
index ef99d9a..0000000
--- a/Swiften/StringCodecs/SHA1.cpp
+++ /dev/null
@@ -1,197 +0,0 @@
-#include "Swiften/Base/Platform.h"
-
-#pragma GCC diagnostic ignored "-Wold-style-cast"
-
-/*
-SHA-1 in C
-By Steve Reid <steve@edmweb.com>
-100% Public Domain
-
-Test Vectors (from FIPS PUB 180-1)
-"abc"
-	A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
-"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
-	84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
-A million repetitions of "a"
-	34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
-*/
-
-/* #define LITTLE_ENDIAN * This should be #define'd if true. */
-/* #define SHA1HANDSOFF * Copies data before messing with it. */
-
-#include <boost/cstdint.hpp>
-#include <stdio.h>
-#include <string.h>
-
-typedef struct {
-		boost::uint32_t state[5];
-		boost::uint32_t count[2];
-		boost::uint8_t buffer[64];
-} SHA1_CTX;
-
-void SHA1Transform(boost::uint32_t state[5], boost::uint8_t buffer[64]);
-void SHA1Init(SHA1_CTX* context);
-void SHA1Update(SHA1_CTX* context, boost::uint8_t* data, unsigned int len);
-void SHA1Final(boost::uint8_t digest[20], SHA1_CTX* context);
-
-#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
-
-/* blk0() and blk() perform the initial expand. */
-/* I got the idea of expanding during the round function from SSLeay */
-#ifdef SWIFTEN_LITTLE_ENDIAN
-#define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
-		|(rol(block->l[i],8)&0x00FF00FF))
-#else
-#define blk0(i) block->l[i]
-#endif
-#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
-		^block->l[(i+2)&15]^block->l[i&15],1))
-
-/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */
-#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);
-#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);
-#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);
-#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);
-#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);
-
-
-/* Hash a single 512-bit block. This is the core of the algorithm. */
-
-void SHA1Transform(boost::uint32_t state[5], boost::uint8_t buffer[64])
-{
-boost::uint32_t a, b, c, d, e;
-typedef union {
-		boost::uint8_t c[64];
-		boost::uint32_t l[16];
-} CHAR64LONG16;
-CHAR64LONG16* block;
-#ifdef SHA1HANDSOFF
-static boost::uint8_t workspace[64];
-		block = (CHAR64LONG16*)workspace;
-		memcpy(block, buffer, 64);
-#else
-		block = reinterpret_cast<CHAR64LONG16*>(buffer);
-#endif
-		/* Copy context->state[] to working vars */
-		a = state[0];
-		b = state[1];
-		c = state[2];
-		d = state[3];
-		e = state[4];
-		/* 4 rounds of 20 operations each. Loop unrolled. */
-		R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);
-		R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7);
-		R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11);
-		R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15);
-		R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19);
-		R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23);
-		R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27);
-		R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31);
-		R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35);
-		R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39);
-		R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43);
-		R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47);
-		R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51);
-		R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55);
-		R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59);
-		R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63);
-		R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67);
-		R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71);
-		R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75);
-		R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79);
-		/* Add the working vars back into context.state[] */
-		state[0] += a;
-		state[1] += b;
-		state[2] += c;
-		state[3] += d;
-		state[4] += e;
-		/* Wipe variables */
-		a = b = c = d = e = 0;
-}
-
-
-/* SHA1Init - Initialize new context */
-
-void SHA1Init(SHA1_CTX* context)
-{
-		/* SHA1 initialization constants */
-		context->state[0] = 0x67452301;
-		context->state[1] = 0xEFCDAB89;
-		context->state[2] = 0x98BADCFE;
-		context->state[3] = 0x10325476;
-		context->state[4] = 0xC3D2E1F0;
-		context->count[0] = context->count[1] = 0;
-}
-
-
-/* Run your data through this. */
-
-void SHA1Update(SHA1_CTX* context, boost::uint8_t* data, unsigned int len)
-{
-unsigned int i, j;
-
-		j = (context->count[0] >> 3) & 63;
-		if ((context->count[0] += len << 3) < (len << 3)) context->count[1]++;
-		context->count[1] += (len >> 29);
-		if ((j + len) > 63) {
-				memcpy(&context->buffer[j], data, (i = 64-j));
-				SHA1Transform(context->state, context->buffer);
-				for ( ; i + 63 < len; i += 64) {
-						SHA1Transform(context->state, &data[i]);
-				}
-				j = 0;
-		}
-		else i = 0;
-		memcpy(&context->buffer[j], &data[i], len - i);
-}
-
-
-/* Add padding and return the message digest. */
-
-void SHA1Final(boost::uint8_t digest[20], SHA1_CTX* context)
-{
-boost::uint32_t i, j;
-boost::uint8_t finalcount[8];
-
-		for (i = 0; i < 8; i++) {
-				finalcount[i] = (boost::uint8_t) ((context->count[(i >= 4 ? 0 : 1)]
-				 >> ((3-(i & 3)) * 8) ) & 255);  /* Endian independent */
-		}
-		SHA1Update(context, (boost::uint8_t *)("\200"), 1);
-		while ((context->count[0] & 504) != 448) {
-				SHA1Update(context, (boost::uint8_t *)("\0"), 1);
-		}
-		SHA1Update(context, finalcount, 8);  /* Should cause a SHA1Transform() */
-		for (i = 0; i < 20; i++) {
-				digest[i] = (boost::uint8_t)
-				 ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255);
-		}
-		/* Wipe variables */
-		i = j = 0;
-		memset(context->buffer, 0, 64);
-		memset(context->state, 0, 20);
-		memset(context->count, 0, 8);
-		memset(&finalcount, 0, 8);
-#ifdef SHA1HANDSOFF  /* make SHA1Transform overwrite it's own static vars */
-		SHA1Transform(context->state, context->buffer);
-#endif
-}
-
-// -----------------------------------------------------------------------------
-
-#include "Swiften/StringCodecs/SHA1.h"
-
-namespace Swift {
-
-ByteArray SHA1::getHash(const ByteArray& input) {
-	ByteArray inputCopy(input);
-	ByteArray digest;
-	digest.resize(20);
-	SHA1_CTX context;
-	SHA1Init(&context);
-	SHA1Update(&context, (boost::uint8_t*) inputCopy.getData(), inputCopy.getSize());
-	SHA1Final((boost::uint8_t*) digest.getData(), &context);
-	return digest;
-}
-
-}
diff --git a/Swiften/StringCodecs/SHA1.h b/Swiften/StringCodecs/SHA1.h
deleted file mode 100644
index 9f54e8e..0000000
--- a/Swiften/StringCodecs/SHA1.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class SHA1 {
-		public:
-			static ByteArray getHash(const ByteArray& data);
-	};
-}
diff --git a/Swiften/StringCodecs/UnitTest/Base64Test.cpp b/Swiften/StringCodecs/UnitTest/Base64Test.cpp
deleted file mode 100644
index a28a9ab..0000000
--- a/Swiften/StringCodecs/UnitTest/Base64Test.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/StringCodecs/Base64.h"
-
-using namespace Swift;
-
-class Base64Test : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(Base64Test);
-		CPPUNIT_TEST(testEncode);
-		CPPUNIT_TEST(testEncode_NonAscii);
-		CPPUNIT_TEST(testEncode_NoData);
-		CPPUNIT_TEST(testDecode);
-		CPPUNIT_TEST(testDecode_NoData);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testEncode() {
-			String result(Base64::encode("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"));
-			CPPUNIT_ASSERT_EQUAL(String("QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejEyMzQ1Njc4OTA="), result);
-		}
-
-		void testEncode_NonAscii() {
-			String result(Base64::encode(ByteArray("\x42\x06\xb2\x3c\xa6\xb0\xa6\x43\xd2\x0d\x89\xb0\x4f\xf5\x8c\xf7\x8b\x80\x96\xed")));
-			CPPUNIT_ASSERT_EQUAL(String("QgayPKawpkPSDYmwT/WM94uAlu0="), result);
-		}
-
-		void testEncode_NoData() {
-			String result(Base64::encode(ByteArray()));
-			CPPUNIT_ASSERT_EQUAL(String(""), result);
-		}
-
-		void testDecode() {
-			ByteArray result(Base64::decode("QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejEyMzQ1Njc4OTA="));
-			CPPUNIT_ASSERT_EQUAL(ByteArray("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"), result);
-		}
-
-		void testDecode_NoData() {
-			ByteArray result(Base64::decode(""));
-			CPPUNIT_ASSERT_EQUAL(ByteArray(), result);
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(Base64Test);
diff --git a/Swiften/StringCodecs/UnitTest/HMACSHA1Test.cpp b/Swiften/StringCodecs/UnitTest/HMACSHA1Test.cpp
deleted file mode 100644
index edfae10..0000000
--- a/Swiften/StringCodecs/UnitTest/HMACSHA1Test.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/StringCodecs/HMACSHA1.h"
-
-using namespace Swift;
-
-class HMACSHA1Test : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(HMACSHA1Test);
-		CPPUNIT_TEST(testGetResult);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testGetResult() {
-			ByteArray result(HMACSHA1::getResult("foo", "foobar"));
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\xa4\xee\xba\x8e\x63\x3d\x77\x88\x69\xf5\x68\xd0\x5a\x1b\x3d\xc7\x2b\xfd\x4\xdd"), result);
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(HMACSHA1Test);
diff --git a/Swiften/StringCodecs/UnitTest/HexifyTest.cpp b/Swiften/StringCodecs/UnitTest/HexifyTest.cpp
deleted file mode 100644
index bf032a3..0000000
--- a/Swiften/StringCodecs/UnitTest/HexifyTest.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/StringCodecs/Hexify.h"
-#include "Swiften/Base/String.h"
-#include "Swiften/Base/ByteArray.h"
-
-using namespace Swift;
-
-class HexifyTest : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(HexifyTest);
-		CPPUNIT_TEST(testHexify);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testHexify() {
-			CPPUNIT_ASSERT_EQUAL(String("4206b23ca6b0a643d20d89b04ff58cf78b8096ed"), Hexify::hexify(ByteArray("\x42\x06\xb2\x3c\xa6\xb0\xa6\x43\xd2\x0d\x89\xb0\x4f\xf5\x8c\xf7\x8b\x80\x96\xed")));
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(HexifyTest);
diff --git a/Swiften/StringCodecs/UnitTest/MD5Test.cpp b/Swiften/StringCodecs/UnitTest/MD5Test.cpp
deleted file mode 100644
index cad8754..0000000
--- a/Swiften/StringCodecs/UnitTest/MD5Test.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/StringCodecs/MD5.h"
-#include "Swiften/Base/ByteArray.h"
-
-using namespace Swift;
-
-class MD5Test : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(MD5Test);
-		CPPUNIT_TEST(testGetHash_Empty);
-		CPPUNIT_TEST(testGetHash_Alphabet);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testGetHash_Empty() {
-			ByteArray result(MD5::getHash(""));
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04\xe9\x80\x09\x98\xec\xf8\x42\x7e", 16), result);
-		}
-
-		void testGetHash_Alphabet() {
-			ByteArray result(MD5::getHash("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"));
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\xd1\x74\xab\x98\xd2\x77\xd9\xf5\xa5\x61\x1c\x2c\x9f\x41\x9d\x9f", 16), result);
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(MD5Test);
diff --git a/Swiften/StringCodecs/UnitTest/PBKDF2Test.cpp b/Swiften/StringCodecs/UnitTest/PBKDF2Test.cpp
deleted file mode 100644
index 92f4fe9..0000000
--- a/Swiften/StringCodecs/UnitTest/PBKDF2Test.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/Base/ByteArray.h"
-#include "Swiften/StringCodecs/PBKDF2.h"
-
-using namespace Swift;
-
-class PBKDF2Test : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(PBKDF2Test);
-		CPPUNIT_TEST(testGetResult_I1);
-		CPPUNIT_TEST(testGetResult_I2);
-		CPPUNIT_TEST(testGetResult_I4096);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testGetResult_I1() {
-			ByteArray result(PBKDF2::encode("password", "salt", 1));
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\x0c\x60\xc8\x0f\x96\x1f\x0e\x71\xf3\xa9\xb5\x24\xaf\x60\x12\x06\x2f\xe0\x37\xa6"), result);
-		}
-
-		void testGetResult_I2() {
-			ByteArray result(PBKDF2::encode("password", "salt", 2));
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\xea\x6c\x1\x4d\xc7\x2d\x6f\x8c\xcd\x1e\xd9\x2a\xce\x1d\x41\xf0\xd8\xde\x89\x57"), result);
-		}
-
-		void testGetResult_I4096() {
-			ByteArray result(PBKDF2::encode("password", "salt", 4096));
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\x4b\x00\x79\x1\xb7\x65\x48\x9a\xbe\xad\x49\xd9\x26\xf7\x21\xd0\x65\xa4\x29\xc1", 20), result);
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(PBKDF2Test);
diff --git a/Swiften/StringCodecs/UnitTest/SHA1Test.cpp b/Swiften/StringCodecs/UnitTest/SHA1Test.cpp
deleted file mode 100644
index 3dbf341..0000000
--- a/Swiften/StringCodecs/UnitTest/SHA1Test.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/extensions/TestFactoryRegistry.h>
-
-#include "Swiften/StringCodecs/SHA1.h"
-
-using namespace Swift;
-
-class SHA1Test : public CppUnit::TestFixture {
-		CPPUNIT_TEST_SUITE(SHA1Test);
-		CPPUNIT_TEST(testGetHash);
-		CPPUNIT_TEST(testGetHash_Twice);
-		CPPUNIT_TEST(testGetHash_NoData);
-		CPPUNIT_TEST_SUITE_END();
-
-	public:
-		void testGetHash() {
-			ByteArray result(SHA1::getHash("client/pc//Exodus 0.9.1<http://jabber.org/protocol/caps<http://jabber.org/protocol/disco#info<http://jabber.org/protocol/disco#items<http://jabber.org/protocol/muc<"));
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\x42\x06\xb2\x3c\xa6\xb0\xa6\x43\xd2\x0d\x89\xb0\x4f\xf5\x8c\xf7\x8b\x80\x96\xed"), result);
-		}
-
-
-		void testGetHash_Twice() {
-			ByteArray input("client/pc//Exodus 0.9.1<http://jabber.org/protocol/caps<http://jabber.org/protocol/disco#info<http://jabber.org/protocol/disco#items<http://jabber.org/protocol/muc<");
-			SHA1::getHash(input);
-			ByteArray result(SHA1::getHash(input));
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\x42\x06\xb2\x3c\xa6\xb0\xa6\x43\xd2\x0d\x89\xb0\x4f\xf5\x8c\xf7\x8b\x80\x96\xed"), result);
-		}
-
-		void testGetHash_NoData() {
-			ByteArray result(SHA1::getHash(ByteArray()));
-
-			CPPUNIT_ASSERT_EQUAL(ByteArray("\xda\x39\xa3\xee\x5e\x6b\x4b\x0d\x32\x55\xbf\xef\x95\x60\x18\x90\xaf\xd8\x07\x09"), result);
-		}
-};
-
-CPPUNIT_TEST_SUITE_REGISTRATION(SHA1Test);
diff --git a/Swiften/StringPrep/SConscript b/Swiften/StringPrep/SConscript
deleted file mode 100644
index 480d81a..0000000
--- a/Swiften/StringPrep/SConscript
+++ /dev/null
@@ -1,9 +0,0 @@
-Import("swiften_env")
-
-myenv = swiften_env.Clone()
-myenv.MergeFlags(swiften_env["LIBIDN_FLAGS"])
-
-objects = myenv.StaticObject([
-			"StringPrep.cpp"
-		])
-swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/StringPrep/StringPrep.cpp b/Swiften/StringPrep/StringPrep.cpp
deleted file mode 100644
index a4af208..0000000
--- a/Swiften/StringPrep/StringPrep.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "Swiften/StringPrep/StringPrep.h"
-
-#include <stringprep.h>
-#include <vector>
-
-namespace Swift {
-
-static const int MAX_STRINGPREP_SIZE = 1024;
-
-const Stringprep_profile* getLibIDNProfile(StringPrep::Profile profile) {
-	switch(profile) {
-		case StringPrep::NamePrep: return stringprep_nameprep; break;
-		case StringPrep::XMPPNodePrep: return stringprep_xmpp_nodeprep; break;
-		case StringPrep::XMPPResourcePrep: return stringprep_xmpp_resourceprep; break;
-		case StringPrep::SASLPrep: return stringprep_saslprep; break;
-	}
-	assert(false);
-	return 0;
-}
-
-String StringPrep::getPrepared(const String& s, Profile profile) {
-	
-	std::vector<char> input(s.getUTF8String().begin(), s.getUTF8String().end());
-	input.resize(MAX_STRINGPREP_SIZE);
-	if (stringprep(&input[0], MAX_STRINGPREP_SIZE, static_cast<Stringprep_profile_flags>(0), getLibIDNProfile(profile)) == 0) {
-		return String(&input[0]);
-	}
-	else {
-		return "";
-	}
-}
-
-}
diff --git a/Swiften/StringPrep/StringPrep.h b/Swiften/StringPrep/StringPrep.h
deleted file mode 100644
index 7dbb03a..0000000
--- a/Swiften/StringPrep/StringPrep.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#pragma once
-
-#include "Swiften/Base/String.h"
-
-namespace Swift {
-	class StringPrep {
-		public:
-			enum Profile {
-				NamePrep,
-				XMPPNodePrep,
-				XMPPResourcePrep,
-				SASLPrep,
-			};
-
-			static String getPrepared(const String& s, Profile profile);
-	};
-}
diff --git a/Swiften/TLS/OpenSSL/OpenSSLContext.cpp b/Swiften/TLS/OpenSSL/OpenSSLContext.cpp
deleted file mode 100644
index 3ce8d54..0000000
--- a/Swiften/TLS/OpenSSL/OpenSSLContext.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-#include <vector>
-#include <openssl/err.h>
-#include <openssl/pkcs12.h>
-
-#include "Swiften/TLS/OpenSSL/OpenSSLContext.h"
-#include "Swiften/TLS/PKCS12Certificate.h"
-
-#pragma GCC diagnostic ignored "-Wold-style-cast"
-
-namespace Swift {
-
-static const int SSL_READ_BUFFERSIZE = 8192;
-
-void freeX509Stack(STACK_OF(X509)* stack) {
-	sk_X509_free(stack);
-}
-
-OpenSSLContext::OpenSSLContext() : state_(Start), context_(0), handle_(0), readBIO_(0), writeBIO_(0) {
-	ensureLibraryInitialized();
-	context_ = SSL_CTX_new(TLSv1_client_method());
-}
-
-OpenSSLContext::~OpenSSLContext() {
-	SSL_free(handle_);
-	SSL_CTX_free(context_);
-}
-
-void OpenSSLContext::ensureLibraryInitialized() {
-	static bool isLibraryInitialized = false;
-	if (!isLibraryInitialized) {
-		SSL_load_error_strings();
-		SSL_library_init();
-		OpenSSL_add_all_algorithms();
-		isLibraryInitialized = true;
-	}
-}
-
-void OpenSSLContext::connect() {
-	handle_ = SSL_new(context_);
-	// Ownership of BIOs is ransferred
-	readBIO_ = BIO_new(BIO_s_mem());
-	writeBIO_ = BIO_new(BIO_s_mem());
-	SSL_set_bio(handle_, readBIO_, writeBIO_);
-
-	state_ = Connecting;
-	doConnect();
-}
-
-void OpenSSLContext::doConnect() {
-	int connectResult = SSL_connect(handle_);
-	int error = SSL_get_error(handle_, connectResult);
-	switch (error) {
-		case SSL_ERROR_NONE:
-			state_ = Connected;
-			onConnected();
-			//X509* x = SSL_get_peer_certificate(handle_);
-			//std::cout << x->name << std::endl;
-			//const char* comp = SSL_get_current_compression(handle_);
-			//std::cout << "Compression: " << SSL_COMP_get_name(comp) << std::endl;
-			break;
-		case SSL_ERROR_WANT_READ:
-			sendPendingDataToNetwork();
-			break;
-		default:
-			state_ = Error;
-			onError();
-	}
-}
-
-void OpenSSLContext::sendPendingDataToNetwork() {
-	int size = BIO_pending(writeBIO_);
-	if (size > 0) {
-		ByteArray data;
-		data.resize(size);
-		BIO_read(writeBIO_, data.getData(), size);
-		onDataForNetwork(data);
-	}
-}
-
-void OpenSSLContext::handleDataFromNetwork(const ByteArray& data) {
-	BIO_write(readBIO_, data.getData(), data.getSize());
-	switch (state_) {
-		case Connecting:
-			doConnect();
-			break;
-		case Connected:
-			sendPendingDataToApplication();
-			break;
-		case Start: assert(false); break;
-		case Error: assert(false); break;
-	}
-}
-
-void OpenSSLContext::handleDataFromApplication(const ByteArray& data) {
-	if (SSL_write(handle_, data.getData(), data.getSize()) >= 0) {
-		sendPendingDataToNetwork();
-	}
-	else {
-		state_ = Error;
-		onError();
-	}
-}
-
-void OpenSSLContext::sendPendingDataToApplication() {
-	ByteArray data;
-	data.resize(SSL_READ_BUFFERSIZE);
-	int ret = SSL_read(handle_, data.getData(), data.getSize());
-	while (ret > 0) {
-		data.resize(ret);
-		onDataForApplication(data);
-		data.resize(SSL_READ_BUFFERSIZE);
-		ret = SSL_read(handle_, data.getData(), data.getSize());
-	}
-	if (ret < 0 && SSL_get_error(handle_, ret) != SSL_ERROR_WANT_READ) {
-		state_ = Error;
-		onError();
-	}
-}
-
-bool OpenSSLContext::setClientCertificate(const PKCS12Certificate& certificate) {
-	if (certificate.isNull()) {
-		return false;
-	}
-
-	// Create a PKCS12 structure
-	BIO* bio = BIO_new(BIO_s_mem());
-	BIO_write(bio, certificate.getData().getData(), certificate.getData().getSize());
-	boost::shared_ptr<PKCS12> pkcs12(d2i_PKCS12_bio(bio, NULL), PKCS12_free);
-	BIO_free(bio);
-	if (!pkcs12) {
-		return false;
-	}
-
-	// Parse PKCS12
-	X509 *certPtr = 0;
-	EVP_PKEY* privateKeyPtr = 0;
-	STACK_OF(X509)* caCertsPtr = 0;
-	int result = PKCS12_parse(pkcs12.get(), certificate.getPassword().getUTF8Data(), &privateKeyPtr, &certPtr, &caCertsPtr);
-	if (result != 1) { 
-		return false;
-	}
-	boost::shared_ptr<X509> cert(certPtr, X509_free);
-	boost::shared_ptr<EVP_PKEY> privateKey(privateKeyPtr, EVP_PKEY_free);
-	boost::shared_ptr<STACK_OF(X509)> caCerts(caCertsPtr, freeX509Stack);
-
-	// Use the key & certificates
-	if (SSL_CTX_use_certificate(context_, cert.get()) != 1) {
-		return false;
-	}
-	if (SSL_CTX_use_PrivateKey(context_, privateKey.get()) != 1) {
-		return false;
-	}
-	for (int i = 0;  i < sk_X509_num(caCerts.get()); ++i) {
-		SSL_CTX_add_extra_chain_cert(context_, sk_X509_value(caCerts.get(), i));
-	}
-	return true;
-}
-
-}
diff --git a/Swiften/TLS/OpenSSL/OpenSSLContext.h b/Swiften/TLS/OpenSSL/OpenSSLContext.h
deleted file mode 100644
index 3e735df..0000000
--- a/Swiften/TLS/OpenSSL/OpenSSLContext.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <openssl/ssl.h>
-#include <boost/signal.hpp>
-#include <boost/noncopyable.hpp>
-
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class PKCS12Certificate;
-
-	class OpenSSLContext : boost::noncopyable {
-		public:
-			OpenSSLContext();
-			~OpenSSLContext();
-
-			void connect();
-			bool setClientCertificate(const PKCS12Certificate& cert);
-
-			void handleDataFromNetwork(const ByteArray&);
-			void handleDataFromApplication(const ByteArray&);
-
-		public:
-			boost::signal<void (const ByteArray&)> onDataForNetwork;
-			boost::signal<void (const ByteArray&)> onDataForApplication;
-			boost::signal<void ()> onError;
-			boost::signal<void ()> onConnected;
-
-		private:
-			static void ensureLibraryInitialized();	
-
-			void doConnect();
-			void sendPendingDataToNetwork();
-			void sendPendingDataToApplication();
-
-		private:
-			enum State { Start, Connecting, Connected, Error };
-
-			State state_;
-			SSL_CTX* context_;
-			SSL* handle_;
-			BIO* readBIO_;
-			BIO* writeBIO_;
-	};
-}
diff --git a/Swiften/TLS/PKCS12Certificate.h b/Swiften/TLS/PKCS12Certificate.h
deleted file mode 100644
index 4b0e708..0000000
--- a/Swiften/TLS/PKCS12Certificate.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef SWIFTEN_PKCS12Certificate_H
-#define SWIFTEN_PKCS12Certificate_H
-
-#include "Swiften/Base/ByteArray.h"
-
-namespace Swift {
-	class PKCS12Certificate {
-		public:
-			PKCS12Certificate() {}
-
-			PKCS12Certificate(const String& filename, const String& password) : password_(password) {
-				data_.readFromFile(filename);
-			}
-
-			bool isNull() const {
-				return data_.isEmpty();
-			}
-
-			const ByteArray& getData() const {
-				return data_;
-			}
-
-			void setData(const ByteArray& data) {
-				data_ = data;
-			}
-
-			const String& getPassword() const {
-				return password_;
-			}
-
-		private:
-			ByteArray data_;
-			String password_;
-	};
-}
-
-#endif
-- 
cgit v0.10.2-6-g49f6