From b6b0695643f932827add43b9de0e09ed74eb6799 Mon Sep 17 00:00:00 2001
From: Tobias Markmann <tm@ayena.de>
Date: Mon, 8 Jun 2015 00:34:19 +0200
Subject: Add missing SWIFTEN_API annotations to public Swiften API

Test-Information:

Tested build on Windows 8 with VS 2014 and ran unit tests.

Change-Id: I3d8096df4801be6901f22564e36eecba0e7310c4

diff --git a/Swiften/Avatars/AvatarMemoryStorage.h b/Swiften/Avatars/AvatarMemoryStorage.h
index 27d6d67..bd67e74 100644
--- a/Swiften/Avatars/AvatarMemoryStorage.h
+++ b/Swiften/Avatars/AvatarMemoryStorage.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -12,9 +12,10 @@
 #include <Swiften/Base/ByteArray.h>
 #include <Swiften/Avatars/AvatarStorage.h>
 #include <Swiften/JID/JID.h>
+#include <Swiften/Base/API.h>
 
 namespace Swift {
-	class AvatarMemoryStorage : public AvatarStorage {
+	class SWIFTEN_API AvatarMemoryStorage : public AvatarStorage {
 		public:
 			virtual bool hasAvatar(const std::string& hash) const { return avatars.find(hash) != avatars.end(); }
 			virtual void addAvatar(const std::string& hash, const ByteArray& avatar) { avatars[hash] = avatar; }
diff --git a/Swiften/Avatars/OfflineAvatarManager.h b/Swiften/Avatars/OfflineAvatarManager.h
index c70f955..22345ae 100644
--- a/Swiften/Avatars/OfflineAvatarManager.h
+++ b/Swiften/Avatars/OfflineAvatarManager.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,11 +7,12 @@
 #pragma once
 
 #include <Swiften/Avatars/AvatarProvider.h>
+#include <Swiften/Base/API.h>
 
 namespace Swift {
 	class AvatarStorage;
 
-	class OfflineAvatarManager : public AvatarProvider {
+	class SWIFTEN_API OfflineAvatarManager : public AvatarProvider {
 		public:
 			OfflineAvatarManager(AvatarStorage*);
 			~OfflineAvatarManager();
diff --git a/Swiften/Base/BoostRandomGenerator.h b/Swiften/Base/BoostRandomGenerator.h
index 60d56af..055c65f 100644
--- a/Swiften/Base/BoostRandomGenerator.h
+++ b/Swiften/Base/BoostRandomGenerator.h
@@ -8,11 +8,12 @@
 
 #include <Swiften/Base/RandomGenerator.h>
 #include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
 
 #include <boost/random/mersenne_twister.hpp>
 
 namespace Swift {
-	class BoostRandomGenerator : public RandomGenerator {
+	class SWIFTEN_API BoostRandomGenerator : public RandomGenerator {
 		public:
 			BoostRandomGenerator();
 
diff --git a/Swiften/Base/SafeAllocator.h b/Swiften/Base/SafeAllocator.h
index d2e49b4..5f9ac70 100644
--- a/Swiften/Base/SafeAllocator.h
+++ b/Swiften/Base/SafeAllocator.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2014 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -15,7 +15,7 @@ namespace Swift {
 	void secureZeroMemory(char* memory, size_t numberOfBytes);
 
 	template<typename T>
-	class SafeAllocator : public std::allocator<T> {
+	class SWIFTEN_API SafeAllocator : public std::allocator<T> {
 		public:
 			template <class U> struct rebind {
 				typedef SafeAllocator<U> other;
diff --git a/Swiften/Base/SafeString.h b/Swiften/Base/SafeString.h
index a0f14e0..65d49d1 100644
--- a/Swiften/Base/SafeString.h
+++ b/Swiften/Base/SafeString.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,9 +7,10 @@
 #pragma once
 
 #include <Swiften/Base/SafeByteArray.h>
+#include <Swiften/Base/API.h>
 
 namespace Swift {
-	class SafeString {
+	class SWIFTEN_API SafeString {
 		public:
 			SafeString(const SafeByteArray& data) : data(data) {
 			}
diff --git a/Swiften/Client/BlockList.h b/Swiften/Client/BlockList.h
index 2cf4aaf..eeb6c10 100644
--- a/Swiften/Client/BlockList.h
+++ b/Swiften/Client/BlockList.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,9 +10,10 @@
 
 #include <Swiften/JID/JID.h>
 #include <Swiften/Base/boost_bsignals.h>
+#include <Swiften/Base/API.h>
 
 namespace Swift {
-	class BlockList {
+	class SWIFTEN_API BlockList {
 		public:
 			enum State {
 				Init,
diff --git a/Swiften/Client/ClientBlockListManager.h b/Swiften/Client/ClientBlockListManager.h
index d3498a7..fb30eee 100644
--- a/Swiften/Client/ClientBlockListManager.h
+++ b/Swiften/Client/ClientBlockListManager.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/Elements/BlockPayload.h>
 #include <Swiften/Elements/BlockListPayload.h>
@@ -21,7 +22,7 @@
 namespace Swift {
 	class IQRouter;
 
-	class ClientBlockListManager {
+	class SWIFTEN_API ClientBlockListManager {
 		public:
 			ClientBlockListManager(IQRouter *iqRouter);
 			~ClientBlockListManager();
diff --git a/Swiften/Client/ClientOptions.h b/Swiften/Client/ClientOptions.h
index 20e7443..4aac609 100644
--- a/Swiften/Client/ClientOptions.h
+++ b/Swiften/Client/ClientOptions.h
@@ -8,13 +8,14 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/URL.h>
 #include <Swiften/Base/SafeString.h>
 
 namespace Swift {
 	class HTTPTrafficFilter;
 
-	struct ClientOptions {
+	struct SWIFTEN_API ClientOptions {
 		enum UseTLS {
 			NeverUseTLS,
 			UseTLSWhenAvailable,
diff --git a/Swiften/Client/ClientSessionStanzaChannel.h b/Swiften/Client/ClientSessionStanzaChannel.h
index 4e2f842..1104416 100644
--- a/Swiften/Client/ClientSessionStanzaChannel.h
+++ b/Swiften/Client/ClientSessionStanzaChannel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/IDGenerator.h>
 #include <Swiften/Client/ClientSession.h>
 #include <Swiften/Client/StanzaChannel.h>
@@ -19,7 +20,7 @@ namespace Swift {
 	/**
 	 * StanzaChannel implementation around a ClientSession.
 	 */
-	class ClientSessionStanzaChannel : public StanzaChannel {
+	class SWIFTEN_API ClientSessionStanzaChannel : public StanzaChannel {
 		public:
 			void setSession(boost::shared_ptr<ClientSession> session);
 
diff --git a/Swiften/Client/MemoryStorages.h b/Swiften/Client/MemoryStorages.h
index 137e77b..e341a37 100644
--- a/Swiften/Client/MemoryStorages.h
+++ b/Swiften/Client/MemoryStorages.h
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2010-2013 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Client/Storages.h>
 
 namespace Swift {
@@ -16,7 +17,7 @@ namespace Swift {
 	 * An implementation of Storages for storing all
 	 * controller data in memory.
 	 */
-	class MemoryStorages : public Storages {
+	class SWIFTEN_API MemoryStorages : public Storages {
 		public:
 			MemoryStorages(CryptoProvider*);
 			~MemoryStorages();
diff --git a/Swiften/Client/StanzaChannel.h b/Swiften/Client/StanzaChannel.h
index a299cd8..c7c0971 100644
--- a/Swiften/Client/StanzaChannel.h
+++ b/Swiften/Client/StanzaChannel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,13 +9,14 @@
 #include <Swiften/Base/boost_bsignals.h>
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/IQChannel.h>
 #include <Swiften/Elements/Message.h>
 #include <Swiften/Elements/Presence.h>
 #include <Swiften/TLS/Certificate.h>
 
 namespace Swift {
-	class StanzaChannel : public IQChannel {
+	class SWIFTEN_API StanzaChannel : public IQChannel {
 		public:
 			virtual void sendMessage(boost::shared_ptr<Message>) = 0;
 			virtual void sendPresence(boost::shared_ptr<Presence>) = 0;
diff --git a/Swiften/Client/XMLBeautifier.h b/Swiften/Client/XMLBeautifier.h
index af35be4..f8dccc5 100644
--- a/Swiften/Client/XMLBeautifier.h
+++ b/Swiften/Client/XMLBeautifier.h
@@ -5,10 +5,10 @@
  */
 
 /*
-* Copyright (c) 2014 Isode Limited.
-* All rights reserved.
-* See the COPYING file for more information.
-*/
+ * Copyright (c) 2014-2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
 
 #pragma once
 
@@ -16,6 +16,7 @@
 #include <string>
 #include <stack>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/Parser/XMLParserFactory.h>
 #include <Swiften/Parser/XMLParserClient.h>
@@ -23,7 +24,7 @@
 
 namespace Swift {
 
-class XMLBeautifier : public XMLParserClient {
+class SWIFTEN_API XMLBeautifier : public XMLParserClient {
 public:
 	XMLBeautifier(bool indention, bool coloring);
 	virtual ~XMLBeautifier();
diff --git a/Swiften/Component/ComponentError.h b/Swiften/Component/ComponentError.h
index ab1df20..7609b9a 100644
--- a/Swiften/Component/ComponentError.h
+++ b/Swiften/Component/ComponentError.h
@@ -1,13 +1,15 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
+
 namespace Swift {
-	class ComponentError {
+	class SWIFTEN_API ComponentError {
 		public:
 			enum Type {
 				UnknownError,
diff --git a/Swiften/Component/ComponentSessionStanzaChannel.h b/Swiften/Component/ComponentSessionStanzaChannel.h
index 89005b3..f0f4abd 100644
--- a/Swiften/Component/ComponentSessionStanzaChannel.h
+++ b/Swiften/Component/ComponentSessionStanzaChannel.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/IDGenerator.h>
 #include <Swiften/Component/ComponentSession.h>
 #include <Swiften/Client/StanzaChannel.h>
@@ -19,7 +20,7 @@ namespace Swift {
 	/**
 	 * StanzaChannel implementation around a ComponentSession.
 	 */
-	class ComponentSessionStanzaChannel : public StanzaChannel {
+	class SWIFTEN_API ComponentSessionStanzaChannel : public StanzaChannel {
 		public:
 			void setSession(boost::shared_ptr<ComponentSession> session);
 
diff --git a/Swiften/Crypto/CommonCryptoCryptoProvider.h b/Swiften/Crypto/CommonCryptoCryptoProvider.h
index e71009c..5c9cbe6 100644
--- a/Swiften/Crypto/CommonCryptoCryptoProvider.h
+++ b/Swiften/Crypto/CommonCryptoCryptoProvider.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2013 Isode Limited.
+ * Copyright (c) 2013-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Crypto/CryptoProvider.h>
 #include <Swiften/Base/Override.h>
 
 namespace Swift {
-	class CommonCryptoCryptoProvider : public CryptoProvider {
+	class SWIFTEN_API CommonCryptoCryptoProvider : public CryptoProvider {
 		public:
 			CommonCryptoCryptoProvider();
 			~CommonCryptoCryptoProvider();
diff --git a/Swiften/Crypto/Hash.h b/Swiften/Crypto/Hash.h
index f7812c1..c054e4e 100644
--- a/Swiften/Crypto/Hash.h
+++ b/Swiften/Crypto/Hash.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013  Isode Limited.
+ * Copyright (c) 2013-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <vector>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/ByteArray.h>
 #include <Swiften/Base/SafeByteArray.h>
 
 namespace Swift {
-	class Hash {
+	class SWIFTEN_API Hash {
 		public:
 			virtual ~Hash();
 
diff --git a/Swiften/Disco/CapsMemoryStorage.h b/Swiften/Disco/CapsMemoryStorage.h
index b61dc3e..2a81554 100644
--- a/Swiften/Disco/CapsMemoryStorage.h
+++ b/Swiften/Disco/CapsMemoryStorage.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,10 +10,11 @@
 #include <map>
 
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/Disco/CapsStorage.h>
 
 namespace Swift {
-	class CapsMemoryStorage : public CapsStorage {
+	class SWIFTEN_API CapsMemoryStorage : public CapsStorage {
 		public:
 			CapsMemoryStorage() {}
 
diff --git a/Swiften/Disco/CapsProvider.h b/Swiften/Disco/CapsProvider.h
index 133265e..08202a7 100644
--- a/Swiften/Disco/CapsProvider.h
+++ b/Swiften/Disco/CapsProvider.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,13 +7,14 @@
 #pragma once
 
 #include <Swiften/Base/boost_bsignals.h>
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/DiscoInfo.h>
 #include <Swiften/Elements/CapsInfo.h>
 
 namespace Swift {
 	
 
-	class CapsProvider { 
+	class SWIFTEN_API CapsProvider { 
 		public:
 			virtual ~CapsProvider() {}
 
diff --git a/Swiften/Disco/GetDiscoInfoRequest.h b/Swiften/Disco/GetDiscoInfoRequest.h
index 7265926..a3c1415 100644
--- a/Swiften/Disco/GetDiscoInfoRequest.h
+++ b/Swiften/Disco/GetDiscoInfoRequest.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/GenericRequest.h>
 #include <Swiften/Elements/DiscoInfo.h>
 
 namespace Swift {
-	class GetDiscoInfoRequest : public GenericRequest<DiscoInfo> {
+	class SWIFTEN_API GetDiscoInfoRequest : public GenericRequest<DiscoInfo> {
 		public:
 			typedef boost::shared_ptr<GetDiscoInfoRequest> ref;
 
diff --git a/Swiften/Disco/GetDiscoItemsRequest.h b/Swiften/Disco/GetDiscoItemsRequest.h
index 1e645c2..a9cf38b 100644
--- a/Swiften/Disco/GetDiscoItemsRequest.h
+++ b/Swiften/Disco/GetDiscoItemsRequest.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/GenericRequest.h>
 #include <Swiften/Elements/DiscoItems.h>
 
 namespace Swift {
-	class GetDiscoItemsRequest : public GenericRequest<DiscoItems> {
+	class SWIFTEN_API GetDiscoItemsRequest : public GenericRequest<DiscoItems> {
 		public:
 			typedef boost::shared_ptr<GetDiscoItemsRequest> ref;
 
diff --git a/Swiften/Elements/AuthChallenge.h b/Swiften/Elements/AuthChallenge.h
index d03a5ef..8cfba19 100644
--- a/Swiften/Elements/AuthChallenge.h
+++ b/Swiften/Elements/AuthChallenge.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,10 +9,11 @@
 #include <boost/optional.hpp>
 #include <vector>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class AuthChallenge : public ToplevelElement {
+	class SWIFTEN_API AuthChallenge : public ToplevelElement {
 		public:
 			AuthChallenge() {
 			}
diff --git a/Swiften/Elements/AuthFailure.h b/Swiften/Elements/AuthFailure.h
index 1101bfe..e722d04 100644
--- a/Swiften/Elements/AuthFailure.h
+++ b/Swiften/Elements/AuthFailure.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class AuthFailure : public ToplevelElement {
+	class SWIFTEN_API AuthFailure : public ToplevelElement {
 		public:
 			typedef boost::shared_ptr<AuthFailure> ref;
 
diff --git a/Swiften/Elements/AuthRequest.h b/Swiften/Elements/AuthRequest.h
index 3c6eee8..939a95a 100644
--- a/Swiften/Elements/AuthRequest.h
+++ b/Swiften/Elements/AuthRequest.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,11 +10,12 @@
 #include <string>
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 #include <Swiften/Base/SafeByteArray.h>
 
 namespace Swift {
-	class AuthRequest : public ToplevelElement {
+	class SWIFTEN_API AuthRequest : public ToplevelElement {
 		public:
 			AuthRequest(const std::string& mechanism = "") : mechanism_(mechanism) {
 			}
diff --git a/Swiften/Elements/AuthResponse.h b/Swiften/Elements/AuthResponse.h
index 3c8dac8..b1f4419 100644
--- a/Swiften/Elements/AuthResponse.h
+++ b/Swiften/Elements/AuthResponse.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,11 +9,12 @@
 #include <vector>
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 #include <Swiften/Base/SafeByteArray.h>
 
 namespace Swift {
-	class AuthResponse : public ToplevelElement {
+	class SWIFTEN_API AuthResponse : public ToplevelElement {
 		public:
 			AuthResponse() {
 			}
diff --git a/Swiften/Elements/AuthSuccess.h b/Swiften/Elements/AuthSuccess.h
index 1cc0220..22c259d 100644
--- a/Swiften/Elements/AuthSuccess.h
+++ b/Swiften/Elements/AuthSuccess.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,10 +9,11 @@
 #include <vector>
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class AuthSuccess : public ToplevelElement {
+	class SWIFTEN_API AuthSuccess : public ToplevelElement {
 		public:
 			AuthSuccess() {}
 
diff --git a/Swiften/Elements/BlockListPayload.h b/Swiften/Elements/BlockListPayload.h
index 7ffc8bf..93e738d 100644
--- a/Swiften/Elements/BlockListPayload.h
+++ b/Swiften/Elements/BlockListPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <vector>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class BlockListPayload : public Payload {
+	class SWIFTEN_API BlockListPayload : public Payload {
 		public:
 			BlockListPayload(const std::vector<JID>& items = std::vector<JID>()) : items(items) {
 			}
diff --git a/Swiften/Elements/BlockPayload.h b/Swiften/Elements/BlockPayload.h
index 54ebb47..495c79b 100644
--- a/Swiften/Elements/BlockPayload.h
+++ b/Swiften/Elements/BlockPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <vector>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class BlockPayload : public Payload {
+	class SWIFTEN_API BlockPayload : public Payload {
 		public:
 			BlockPayload(const std::vector<JID>& jids = std::vector<JID>()) : items(jids) {
 			}
diff --git a/Swiften/Elements/Body.h b/Swiften/Elements/Body.h
index 4ef8bf0..fc7016f 100644
--- a/Swiften/Elements/Body.h
+++ b/Swiften/Elements/Body.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class Body : public Payload {
+	class SWIFTEN_API Body : public Payload {
 		public:
 			Body(const std::string& text = "") : text_(text) {
 			}
diff --git a/Swiften/Elements/Bytestreams.h b/Swiften/Elements/Bytestreams.h
index dd6bb5c..bc114a2 100644
--- a/Swiften/Elements/Bytestreams.h
+++ b/Swiften/Elements/Bytestreams.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -11,11 +11,12 @@
 #include <boost/shared_ptr.hpp>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class Bytestreams : public Payload {
+	class SWIFTEN_API Bytestreams : public Payload {
 		public:
 			typedef boost::shared_ptr<Bytestreams> ref;
 
diff --git a/Swiften/Elements/CapsInfo.h b/Swiften/Elements/CapsInfo.h
index 989d796..bdfe342 100644
--- a/Swiften/Elements/CapsInfo.h
+++ b/Swiften/Elements/CapsInfo.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,10 +9,11 @@
 #include <boost/shared_ptr.hpp>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class CapsInfo : public Payload {
+	class SWIFTEN_API CapsInfo : public Payload {
 		public:
 			typedef boost::shared_ptr<CapsInfo> ref;
 
diff --git a/Swiften/Elements/ChatState.h b/Swiften/Elements/ChatState.h
index 1755eea..a7a8b1d 100644
--- a/Swiften/Elements/ChatState.h
+++ b/Swiften/Elements/ChatState.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class ChatState : public Payload {
+	class SWIFTEN_API ChatState : public Payload {
 		public:
 			enum ChatStateType {Active, Composing, Paused, Inactive, Gone};
 			ChatState(ChatStateType state = Active) {
diff --git a/Swiften/Elements/Command.h b/Swiften/Elements/Command.h
index dbf9039..060037d 100644
--- a/Swiften/Elements/Command.h
+++ b/Swiften/Elements/Command.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 #include <boost/shared_ptr.hpp>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/Elements/Form.h>
 
@@ -16,7 +17,7 @@ namespace Swift {
 	/**
 	 * Ad-Hoc Command (XEP-0050).
 	 */
-	class Command : public Payload {
+	class SWIFTEN_API Command : public Payload {
 		public:
 			typedef boost::shared_ptr<Command> ref;
 
diff --git a/Swiften/Elements/ComponentHandshake.h b/Swiften/Elements/ComponentHandshake.h
index 67d9727..f19c488 100644
--- a/Swiften/Elements/ComponentHandshake.h
+++ b/Swiften/Elements/ComponentHandshake.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,10 +9,11 @@
 #include <boost/shared_ptr.hpp>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class ComponentHandshake : public ToplevelElement {
+	class SWIFTEN_API ComponentHandshake : public ToplevelElement {
 		public:
 			typedef boost::shared_ptr<ComponentHandshake> ref;
 
diff --git a/Swiften/Elements/CompressFailure.h b/Swiften/Elements/CompressFailure.h
index eff776e..a32ba27 100644
--- a/Swiften/Elements/CompressFailure.h
+++ b/Swiften/Elements/CompressFailure.h
@@ -1,16 +1,16 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
-
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class CompressFailure : public ToplevelElement {
+	class SWIFTEN_API CompressFailure : public ToplevelElement {
 		public:
 			CompressFailure() {}
 	};
diff --git a/Swiften/Elements/CompressRequest.h b/Swiften/Elements/CompressRequest.h
index dda6684..4e2a3a4 100644
--- a/Swiften/Elements/CompressRequest.h
+++ b/Swiften/Elements/CompressRequest.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class CompressRequest : public ToplevelElement
+	class SWIFTEN_API CompressRequest : public ToplevelElement
 	{
 		public:
 			CompressRequest(const std::string& method = "") : method_(method) {}
diff --git a/Swiften/Elements/Compressed.h b/Swiften/Elements/Compressed.h
index 430143c..bcfcacc 100644
--- a/Swiften/Elements/Compressed.h
+++ b/Swiften/Elements/Compressed.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class Compressed : public ToplevelElement {
+	class SWIFTEN_API Compressed : public ToplevelElement {
 		public:
 			Compressed() {}
 	};
diff --git a/Swiften/Elements/Delay.h b/Swiften/Elements/Delay.h
index c87e3ec..2cfb1d0 100644
--- a/Swiften/Elements/Delay.h
+++ b/Swiften/Elements/Delay.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,11 +9,12 @@
 #include <boost/date_time/posix_time/posix_time_types.hpp>
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/JID/JID.h>
 
 namespace Swift {
-	class Delay : public Payload {
+	class SWIFTEN_API Delay : public Payload {
 		public:
 			Delay() {}
 			Delay(const boost::posix_time::ptime& time, const JID& from = JID()) : time_(time), from_(from) {}
diff --git a/Swiften/Elements/DeliveryReceipt.h b/Swiften/Elements/DeliveryReceipt.h
index bd634db..eac5280 100644
--- a/Swiften/Elements/DeliveryReceipt.h
+++ b/Swiften/Elements/DeliveryReceipt.h
@@ -4,17 +4,22 @@
  * See http://www.opensource.org/licenses/bsd-license.php for more information.
  */
 
-#pragma once
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
 
-#include <string>
+#pragma once
 
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
 
-class DeliveryReceipt : public Payload {
+class SWIFTEN_API DeliveryReceipt : public Payload {
 	public:
 		typedef boost::shared_ptr<DeliveryReceipt> ref;
 
diff --git a/Swiften/Elements/DeliveryReceiptRequest.h b/Swiften/Elements/DeliveryReceiptRequest.h
index 3998785..1f03c5a 100644
--- a/Swiften/Elements/DeliveryReceiptRequest.h
+++ b/Swiften/Elements/DeliveryReceiptRequest.h
@@ -4,13 +4,20 @@
  * See http://www.opensource.org/licenses/bsd-license.php for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
 
-class DeliveryReceiptRequest : public Payload {
+class SWIFTEN_API DeliveryReceiptRequest : public Payload {
 	public:
 		typedef boost::shared_ptr<DeliveryReceiptRequest> ref;
 
diff --git a/Swiften/Elements/DiscoItems.h b/Swiften/Elements/DiscoItems.h
index 0c974ca..1084f2b 100644
--- a/Swiften/Elements/DiscoItems.h
+++ b/Swiften/Elements/DiscoItems.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 #include <vector>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/JID/JID.h>
 
@@ -16,7 +17,7 @@ namespace Swift {
 	/**
 	 * Service discovery disco#items from XEP-0030.
 	 */
-	class DiscoItems : public Payload {
+	class SWIFTEN_API DiscoItems : public Payload {
 		public:
 			/**
 			 * A single result item.
diff --git a/Swiften/Elements/EnableStreamManagement.h b/Swiften/Elements/EnableStreamManagement.h
index c606eb3..ef09f79 100644
--- a/Swiften/Elements/EnableStreamManagement.h
+++ b/Swiften/Elements/EnableStreamManagement.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,10 +7,10 @@
 #pragma once
 
 #include <Swiften/Elements/ToplevelElement.h>
-
+#include <Swiften/Base/API.h>
 
 namespace Swift {
-	class EnableStreamManagement : public ToplevelElement {
+	class SWIFTEN_API EnableStreamManagement : public ToplevelElement {
 		public:
 			EnableStreamManagement() {}
 	};
diff --git a/Swiften/Elements/ErrorPayload.h b/Swiften/Elements/ErrorPayload.h
index 5860c68..27f4249 100644
--- a/Swiften/Elements/ErrorPayload.h
+++ b/Swiften/Elements/ErrorPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,10 +9,11 @@
 #include <boost/shared_ptr.hpp>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class ErrorPayload : public Payload {
+	class SWIFTEN_API ErrorPayload : public Payload {
 		public:
 			typedef boost::shared_ptr<ErrorPayload> ref;
 
diff --git a/Swiften/Elements/FormField.h b/Swiften/Elements/FormField.h
index 8317e25..a8649fb 100644
--- a/Swiften/Elements/FormField.h
+++ b/Swiften/Elements/FormField.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2013 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,10 +10,11 @@
 #include <boost/shared_ptr.hpp>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 
 namespace Swift {
-	class FormField {
+	class SWIFTEN_API FormField {
 		public:
 			typedef boost::shared_ptr<FormField> ref;
 
diff --git a/Swiften/Elements/HashElement.h b/Swiften/Elements/HashElement.h
index 9bab7ef..cc5a0e4 100644
--- a/Swiften/Elements/HashElement.h
+++ b/Swiften/Elements/HashElement.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Isode Limited.
+ * Copyright (c) 2014-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,13 +8,14 @@
 
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/ByteArray.h>
 
 namespace Swift {
 	/*
 	 * @brief This class represents a XEP-0300 <hash/> element.
 	 */
-	class HashElement {
+	class SWIFTEN_API HashElement {
 		public:
 			HashElement(const std::string& algorithm, const ByteArray& hash) : algorithm_(algorithm), hash_(hash) {
 			}
diff --git a/Swiften/Elements/IBB.h b/Swiften/Elements/IBB.h
index e8c0d22..58194b9 100644
--- a/Swiften/Elements/IBB.h
+++ b/Swiften/Elements/IBB.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -11,10 +11,11 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class IBB : public Payload {
+	class SWIFTEN_API IBB : public Payload {
 		public:
 			typedef boost::shared_ptr<IBB> ref;
 
diff --git a/Swiften/Elements/Idle.h b/Swiften/Elements/Idle.h
index 572eba2..d30120c 100644
--- a/Swiften/Elements/Idle.h
+++ b/Swiften/Elements/Idle.h
@@ -4,16 +4,23 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
 #include <boost/shared_ptr.hpp>
 #include <boost/date_time/posix_time/posix_time_types.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
 
-	class Idle : public Payload {
+	class SWIFTEN_API Idle : public Payload {
 	public:
 		typedef boost::shared_ptr<Idle> ref;
 
diff --git a/Swiften/Elements/InBandRegistrationPayload.h b/Swiften/Elements/InBandRegistrationPayload.h
index 04742ba..4089bf7 100644
--- a/Swiften/Elements/InBandRegistrationPayload.h
+++ b/Swiften/Elements/InBandRegistrationPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,11 +10,12 @@
 #include <boost/optional.hpp>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/Elements/Form.h>
 
 namespace Swift {
-	class InBandRegistrationPayload : public Payload {
+	class SWIFTEN_API InBandRegistrationPayload : public Payload {
 		public:
 			typedef boost::shared_ptr<InBandRegistrationPayload> ref;
 
diff --git a/Swiften/Elements/JingleContentPayload.h b/Swiften/Elements/JingleContentPayload.h
index 94efdb9..f908053 100644
--- a/Swiften/Elements/JingleContentPayload.h
+++ b/Swiften/Elements/JingleContentPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,13 +10,14 @@
 #include <boost/optional.hpp>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/Elements/JingleDescription.h>
 #include <Swiften/Elements/JingleTransportPayload.h>
 
 namespace Swift {
-	class JingleContentPayload : public Payload {
+	class SWIFTEN_API JingleContentPayload : public Payload {
 		public:
 			typedef boost::shared_ptr<JingleContentPayload> ref;
 
diff --git a/Swiften/Elements/JingleDescription.h b/Swiften/Elements/JingleDescription.h
index c3adc9e..7577383 100644
--- a/Swiften/Elements/JingleDescription.h
+++ b/Swiften/Elements/JingleDescription.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class JingleDescription : public Payload {
+	class SWIFTEN_API JingleDescription : public Payload {
 		public:
 			typedef boost::shared_ptr<JingleDescription> ref;
 	};
diff --git a/Swiften/Elements/JingleFileTransferDescription.h b/Swiften/Elements/JingleFileTransferDescription.h
index 9308abf..39f10b9 100644
--- a/Swiften/Elements/JingleFileTransferDescription.h
+++ b/Swiften/Elements/JingleFileTransferDescription.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2014 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,11 +9,12 @@
 #include <boost/shared_ptr.hpp>
 #include <vector>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JingleDescription.h>
 #include <Swiften/Elements/JingleFileTransferFileInfo.h>
 
 namespace Swift {
-	class JingleFileTransferDescription : public JingleDescription {
+	class SWIFTEN_API JingleFileTransferDescription : public JingleDescription {
 		public:
 			typedef boost::shared_ptr<JingleFileTransferDescription> ref;
 
diff --git a/Swiften/Elements/JingleFileTransferFileInfo.h b/Swiften/Elements/JingleFileTransferFileInfo.h
index 8fec59e..92929a0 100644
--- a/Swiften/Elements/JingleFileTransferFileInfo.h
+++ b/Swiften/Elements/JingleFileTransferFileInfo.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Isode Limited.
+ * Copyright (c) 2014-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -14,6 +14,7 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/date_time/posix_time/posix_time_types.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/HashElement.h>
 #include <Swiften/Elements/Payload.h>
 
@@ -22,7 +23,7 @@ namespace Swift {
 	/**
 	 * @brief This class represents the file info used in XEP-0234.
 	 */
-	class JingleFileTransferFileInfo : public Payload {
+	class SWIFTEN_API JingleFileTransferFileInfo : public Payload {
 		typedef boost::shared_ptr<JingleFileTransferFileInfo> ref;
 
 		public:
diff --git a/Swiften/Elements/JingleFileTransferHash.h b/Swiften/Elements/JingleFileTransferHash.h
index d34e35d..3f3c3f0 100644
--- a/Swiften/Elements/JingleFileTransferHash.h
+++ b/Swiften/Elements/JingleFileTransferHash.h
@@ -5,7 +5,7 @@
  */
 
 /*
- * Copyright (c) 2014 Isode Limited.
+ * Copyright (c) 2014-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -16,12 +16,13 @@
 #include <map>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JingleDescription.h>
 #include <Swiften/Elements/JingleFileTransferFileInfo.h>
 
 namespace Swift {
 
-class JingleFileTransferHash : public Payload {
+class SWIFTEN_API JingleFileTransferHash : public Payload {
 public:
 	typedef boost::shared_ptr<JingleFileTransferHash> ref;
 
diff --git a/Swiften/Elements/JingleIBBTransportPayload.h b/Swiften/Elements/JingleIBBTransportPayload.h
index efb725d..d87570d 100644
--- a/Swiften/Elements/JingleIBBTransportPayload.h
+++ b/Swiften/Elements/JingleIBBTransportPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2014 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,10 +10,11 @@
 #include <boost/optional.hpp>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JingleTransportPayload.h>
 
 namespace Swift {
-	class JingleIBBTransportPayload : public JingleTransportPayload {
+	class SWIFTEN_API JingleIBBTransportPayload : public JingleTransportPayload {
 		public:
 			typedef boost::shared_ptr<JingleIBBTransportPayload> ref;
 
diff --git a/Swiften/Elements/JinglePayload.h b/Swiften/Elements/JinglePayload.h
index 5d22b20..86e3747 100644
--- a/Swiften/Elements/JinglePayload.h
+++ b/Swiften/Elements/JinglePayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2014 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -17,7 +17,7 @@
 #include <Swiften/Elements/JingleContentPayload.h>
 
 namespace Swift {
-	class JinglePayload : public Payload {
+	class SWIFTEN_API JinglePayload : public Payload {
 		public:
 			typedef boost::shared_ptr<JinglePayload> ref;
 			struct Reason : public Payload {
diff --git a/Swiften/Elements/JingleS5BTransportPayload.h b/Swiften/Elements/JingleS5BTransportPayload.h
index f6132a1..313e51a 100644
--- a/Swiften/Elements/JingleS5BTransportPayload.h
+++ b/Swiften/Elements/JingleS5BTransportPayload.h
@@ -10,13 +10,14 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JingleTransportPayload.h>
 #include <Swiften/Elements/Bytestreams.h>
 #include <Swiften/Network/HostAddressPort.h>
 
 
 namespace Swift {
-	class JingleS5BTransportPayload : public JingleTransportPayload {
+	class SWIFTEN_API JingleS5BTransportPayload : public JingleTransportPayload {
 		public:
 			enum Mode {
 				TCPMode, // default case
diff --git a/Swiften/Elements/JingleTransportPayload.h b/Swiften/Elements/JingleTransportPayload.h
index 522ff17..70f3d25 100644
--- a/Swiften/Elements/JingleTransportPayload.h
+++ b/Swiften/Elements/JingleTransportPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class JingleTransportPayload : public Payload {
+	class SWIFTEN_API JingleTransportPayload : public Payload {
 		public:
 			void setSessionID(const std::string& id) {
 				sessionID = id;
diff --git a/Swiften/Elements/Last.h b/Swiften/Elements/Last.h
index 1775a8a..68cf7a7 100644
--- a/Swiften/Elements/Last.h
+++ b/Swiften/Elements/Last.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class Last : public Payload {
+	class SWIFTEN_API Last : public Payload {
 		public:
 			Last(int seconds = 0) : seconds_(seconds) {}
 
diff --git a/Swiften/Elements/MUCAdminPayload.h b/Swiften/Elements/MUCAdminPayload.h
index 259979f..b271f06 100644
--- a/Swiften/Elements/MUCAdminPayload.h
+++ b/Swiften/Elements/MUCAdminPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -11,13 +11,14 @@
 #include <string>
 #include <vector>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/Elements/MUCOccupant.h>
 #include <Swiften/Elements/MUCItem.h>
 
 namespace Swift {
-	class MUCAdminPayload : public Payload {
+	class SWIFTEN_API MUCAdminPayload : public Payload {
 		public:
 			typedef boost::shared_ptr<MUCAdminPayload> ref;
 
diff --git a/Swiften/Elements/MUCDestroyPayload.h b/Swiften/Elements/MUCDestroyPayload.h
index 73649b4..b68f97c 100644
--- a/Swiften/Elements/MUCDestroyPayload.h
+++ b/Swiften/Elements/MUCDestroyPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/JID/JID.h>
 
 namespace Swift {
-	class MUCDestroyPayload : public Payload {
+	class SWIFTEN_API MUCDestroyPayload : public Payload {
 		public:
 			typedef boost::shared_ptr<MUCDestroyPayload> ref;
 
diff --git a/Swiften/Elements/MUCInvitationPayload.h b/Swiften/Elements/MUCInvitationPayload.h
index dcebe4f..fd92a83 100644
--- a/Swiften/Elements/MUCInvitationPayload.h
+++ b/Swiften/Elements/MUCInvitationPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/JID/JID.h>
 
 namespace Swift {
-	class MUCInvitationPayload : public Payload {
+	class SWIFTEN_API MUCInvitationPayload : public Payload {
 		public:
 			typedef boost::shared_ptr<MUCInvitationPayload> ref;
 			MUCInvitationPayload() : continuation_(false), impromptu_(false) {
diff --git a/Swiften/Elements/MUCOwnerPayload.h b/Swiften/Elements/MUCOwnerPayload.h
index 9cad0f0..09166b6 100644
--- a/Swiften/Elements/MUCOwnerPayload.h
+++ b/Swiften/Elements/MUCOwnerPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/Elements/Form.h>
 
 namespace Swift {
-	class MUCOwnerPayload : public Payload {
+	class SWIFTEN_API MUCOwnerPayload : public Payload {
 		public:
 			typedef boost::shared_ptr<MUCOwnerPayload> ref;
 
diff --git a/Swiften/Elements/MUCPayload.h b/Swiften/Elements/MUCPayload.h
index 14b57c4..dadfc6a 100644
--- a/Swiften/Elements/MUCPayload.h
+++ b/Swiften/Elements/MUCPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,12 +9,13 @@
 #include <boost/optional.hpp>
 #include <boost/date_time/posix_time/posix_time_types.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <string>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class MUCPayload : public Payload {
+	class SWIFTEN_API MUCPayload : public Payload {
 		public:
 			typedef boost::shared_ptr<MUCPayload> ref;
 
diff --git a/Swiften/Elements/MUCUserPayload.h b/Swiften/Elements/MUCUserPayload.h
index 7109845..ed31816 100644
--- a/Swiften/Elements/MUCUserPayload.h
+++ b/Swiften/Elements/MUCUserPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -11,13 +11,14 @@
 #include <string>
 #include <vector>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/Elements/MUCOccupant.h>
 #include <Swiften/Elements/MUCItem.h>
 
 namespace Swift {
-	class MUCUserPayload : public Payload {
+	class SWIFTEN_API MUCUserPayload : public Payload {
 		public:
 			typedef boost::shared_ptr<MUCUserPayload> ref;
 
diff --git a/Swiften/Elements/Message.h b/Swiften/Elements/Message.h
index b1ce349..f6c16e4 100644
--- a/Swiften/Elements/Message.h
+++ b/Swiften/Elements/Message.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -11,6 +11,7 @@
 #include <boost/smart_ptr/make_shared.hpp>
 
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Body.h>
 #include <Swiften/Elements/Subject.h>
 #include <Swiften/Elements/ErrorPayload.h>
@@ -18,7 +19,7 @@
 #include <Swiften/Elements/Replace.h>
 
 namespace Swift {
-	class Message : public Stanza {
+	class SWIFTEN_API Message : public Stanza {
 	  public:
 			typedef boost::shared_ptr<Message> ref;
 
diff --git a/Swiften/Elements/Nickname.h b/Swiften/Elements/Nickname.h
index c6f3a31..2c62720 100644
--- a/Swiften/Elements/Nickname.h
+++ b/Swiften/Elements/Nickname.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <string>
 
 namespace Swift {
-	class Nickname : public Payload {
+	class SWIFTEN_API Nickname : public Payload {
 		public:
 			Nickname(const std::string& nickname = "") : nickname(nickname) {
 			}
diff --git a/Swiften/Elements/Priority.h b/Swiften/Elements/Priority.h
index affb67b..6de42b4 100644
--- a/Swiften/Elements/Priority.h
+++ b/Swiften/Elements/Priority.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class Priority : public Payload {
+	class SWIFTEN_API Priority : public Payload {
 		public:
 			Priority(int priority = 0) : priority_(priority) {
 			}
diff --git a/Swiften/Elements/PrivateStorage.h b/Swiften/Elements/PrivateStorage.h
index 02b18c1..15455b8 100644
--- a/Swiften/Elements/PrivateStorage.h
+++ b/Swiften/Elements/PrivateStorage.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class PrivateStorage : public Payload {
+	class SWIFTEN_API PrivateStorage : public Payload {
 		public:
 			PrivateStorage(boost::shared_ptr<Payload> payload = boost::shared_ptr<Payload>()) : payload(payload) {
 			}
diff --git a/Swiften/Elements/ProtocolHeader.h b/Swiften/Elements/ProtocolHeader.h
index 428ad1c..a38f806 100644
--- a/Swiften/Elements/ProtocolHeader.h
+++ b/Swiften/Elements/ProtocolHeader.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,8 +8,10 @@
 
 #include <string>
 
+#include <Swiften/Base/API.h>
+
 namespace Swift {
-	class ProtocolHeader {
+	class SWIFTEN_API ProtocolHeader {
 		public:
 			ProtocolHeader() : version("1.0") {}
 
diff --git a/Swiften/Elements/RawXMLPayload.h b/Swiften/Elements/RawXMLPayload.h
index c8e96f8..d1b104d 100644
--- a/Swiften/Elements/RawXMLPayload.h
+++ b/Swiften/Elements/RawXMLPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class RawXMLPayload : public Payload {
+	class SWIFTEN_API RawXMLPayload : public Payload {
 		public:
 			RawXMLPayload(const std::string& data = "") : rawXML_(data) {}
 
diff --git a/Swiften/Elements/Replace.h b/Swiften/Elements/Replace.h
index 96935f5..eadc8fd 100644
--- a/Swiften/Elements/Replace.h
+++ b/Swiften/Elements/Replace.h
@@ -4,15 +4,22 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
 #include <boost/shared_ptr.hpp>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class Replace : public Payload {
+	class SWIFTEN_API Replace : public Payload {
 		public:
 			typedef boost::shared_ptr<Replace> ref;
 			Replace(const std::string& id = std::string()) : replaceID_(id) {}
diff --git a/Swiften/Elements/ResourceBind.h b/Swiften/Elements/ResourceBind.h
index 15b2c41..01d7e8b 100644
--- a/Swiften/Elements/ResourceBind.h
+++ b/Swiften/Elements/ResourceBind.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,11 +7,13 @@
 #pragma once
 
 #include <string>
+
+#include <Swiften/Base/API.h> 
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/JID/JID.h>
 
 namespace Swift {
-	class ResourceBind : public Payload {
+	class SWIFTEN_API ResourceBind : public Payload {
 		public:
 			ResourceBind() {}
 
diff --git a/Swiften/Elements/RosterItemPayload.h b/Swiften/Elements/RosterItemPayload.h
index f6d95ed..2228529 100644
--- a/Swiften/Elements/RosterItemPayload.h
+++ b/Swiften/Elements/RosterItemPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,10 +9,11 @@
 #include <vector>
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 
 namespace Swift {
-	class RosterItemPayload {
+	class SWIFTEN_API RosterItemPayload {
 		public:
 			enum Subscription { None, To, From, Both, Remove };
 
diff --git a/Swiften/Elements/S5BProxyRequest.h b/Swiften/Elements/S5BProxyRequest.h
index b7541fc..2732f18 100644
--- a/Swiften/Elements/S5BProxyRequest.h
+++ b/Swiften/Elements/S5BProxyRequest.h
@@ -16,13 +16,14 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Network/HostAddressPort.h>
 
 namespace Swift {
 
-class S5BProxyRequest : public Payload {
+class SWIFTEN_API S5BProxyRequest : public Payload {
 public:
 	typedef boost::shared_ptr<S5BProxyRequest> ref;
 
diff --git a/Swiften/Elements/SearchPayload.h b/Swiften/Elements/SearchPayload.h
index d3cb997..1b1df0f 100644
--- a/Swiften/Elements/SearchPayload.h
+++ b/Swiften/Elements/SearchPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/Elements/Form.h>
 #include <string>
@@ -17,7 +18,7 @@ namespace Swift {
 	/**
 	 * XEP-0055 search payload.
 	 */
-	class SearchPayload : public Payload {
+	class SWIFTEN_API SearchPayload : public Payload {
 		public:
 			typedef boost::shared_ptr<SearchPayload> ref;
 
diff --git a/Swiften/Elements/StanzaAck.h b/Swiften/Elements/StanzaAck.h
index cd2fa34..d976802 100644
--- a/Swiften/Elements/StanzaAck.h
+++ b/Swiften/Elements/StanzaAck.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class StanzaAck : public ToplevelElement {
+	class SWIFTEN_API StanzaAck : public ToplevelElement {
 		public:
 			typedef boost::shared_ptr<StanzaAck> ref;
 
diff --git a/Swiften/Elements/StanzaAckRequest.h b/Swiften/Elements/StanzaAckRequest.h
index ccddbf2..dc3bf32 100644
--- a/Swiften/Elements/StanzaAckRequest.h
+++ b/Swiften/Elements/StanzaAckRequest.h
@@ -1,15 +1,15 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
-
 namespace Swift {
-	class StanzaAckRequest : public ToplevelElement {
+	class SWIFTEN_API StanzaAckRequest : public ToplevelElement {
 	};
 }
diff --git a/Swiften/Elements/StartSession.h b/Swiften/Elements/StartSession.h
index 16e481b..9191ea9 100644
--- a/Swiften/Elements/StartSession.h
+++ b/Swiften/Elements/StartSession.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,10 +7,11 @@
 #pragma once
 
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class StartSession : public Payload {
+	class SWIFTEN_API StartSession : public Payload {
 		public:
 			StartSession() {}
 	};
diff --git a/Swiften/Elements/StartTLSFailure.h b/Swiften/Elements/StartTLSFailure.h
index 1d1dd73..1477962 100644
--- a/Swiften/Elements/StartTLSFailure.h
+++ b/Swiften/Elements/StartTLSFailure.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class StartTLSFailure : public ToplevelElement {
+	class SWIFTEN_API StartTLSFailure : public ToplevelElement {
 		public:
 			StartTLSFailure() {}
 	};
diff --git a/Swiften/Elements/StartTLSRequest.h b/Swiften/Elements/StartTLSRequest.h
index 7325abb..648eef7 100644
--- a/Swiften/Elements/StartTLSRequest.h
+++ b/Swiften/Elements/StartTLSRequest.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class StartTLSRequest : public ToplevelElement {
+	class SWIFTEN_API StartTLSRequest : public ToplevelElement {
 		public:
 			StartTLSRequest() {}
 	};
diff --git a/Swiften/Elements/Status.h b/Swiften/Elements/Status.h
index 58df37d..a7620e4 100644
--- a/Swiften/Elements/Status.h
+++ b/Swiften/Elements/Status.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <string>
 
 namespace Swift {
-	class Status : public Payload {
+	class SWIFTEN_API Status : public Payload {
 		public:
 			Status(const std::string& text = "") : text_(text) {
 			}
diff --git a/Swiften/Elements/Storage.h b/Swiften/Elements/Storage.h
index 24f11da..8bbbc55 100644
--- a/Swiften/Elements/Storage.h
+++ b/Swiften/Elements/Storage.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -12,11 +12,12 @@
 
 #include <Swiften/Elements/Payload.h>
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Base/SafeString.h>
 
 namespace Swift {
-	class Storage : public Payload {
+	class SWIFTEN_API Storage : public Payload {
 		public:
 			struct Room {
 				Room() : autoJoin(false) {}
diff --git a/Swiften/Elements/StreamError.h b/Swiften/Elements/StreamError.h
index 24f8b53..5a15f40 100644
--- a/Swiften/Elements/StreamError.h
+++ b/Swiften/Elements/StreamError.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 #include <string>
 
 namespace Swift {
-	class StreamError : public ToplevelElement {
+	class SWIFTEN_API StreamError : public ToplevelElement {
 		public:
 			typedef boost::shared_ptr<StreamError> ref;
 
diff --git a/Swiften/Elements/StreamInitiation.h b/Swiften/Elements/StreamInitiation.h
index 672af30..53c8f11 100644
--- a/Swiften/Elements/StreamInitiation.h
+++ b/Swiften/Elements/StreamInitiation.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -11,11 +11,12 @@
 #include <boost/shared_ptr.hpp>
 
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/Elements/StreamInitiationFileInfo.h>
 
 namespace Swift {
-	class StreamInitiation : public Payload {
+	class SWIFTEN_API StreamInitiation : public Payload {
 		public:
 			typedef boost::shared_ptr<StreamInitiation> ref;
 
diff --git a/Swiften/Elements/StreamInitiationFileInfo.h b/Swiften/Elements/StreamInitiationFileInfo.h
index bee0ff0..bd920a0 100644
--- a/Swiften/Elements/StreamInitiationFileInfo.h
+++ b/Swiften/Elements/StreamInitiationFileInfo.h
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2011-2013 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <boost/shared_ptr.hpp>
 #include <boost/date_time/posix_time/posix_time_types.hpp>
@@ -14,7 +15,7 @@
 
 namespace Swift {
 
-class StreamInitiationFileInfo : public Payload {
+class SWIFTEN_API StreamInitiationFileInfo : public Payload {
 public:
 	typedef boost::shared_ptr<StreamInitiationFileInfo> ref;
 	
diff --git a/Swiften/Elements/StreamManagementFailed.h b/Swiften/Elements/StreamManagementFailed.h
index 97887cc..70781d7 100644
--- a/Swiften/Elements/StreamManagementFailed.h
+++ b/Swiften/Elements/StreamManagementFailed.h
@@ -1,16 +1,16 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
-
 namespace Swift {
-	class StreamManagementFailed : public ToplevelElement {
+	class SWIFTEN_API StreamManagementFailed : public ToplevelElement {
 		public:
 			StreamManagementFailed() {}
 	};
diff --git a/Swiften/Elements/StreamResume.h b/Swiften/Elements/StreamResume.h
index ce531f3..ca08546 100644
--- a/Swiften/Elements/StreamResume.h
+++ b/Swiften/Elements/StreamResume.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2014 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,10 +9,11 @@
 #include <string>
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class StreamResume : public ToplevelElement {
+	class SWIFTEN_API StreamResume : public ToplevelElement {
 		public:
 			StreamResume();
 			~StreamResume();
diff --git a/Swiften/Elements/StreamResumed.h b/Swiften/Elements/StreamResumed.h
index 5acecf8..68e0688 100644
--- a/Swiften/Elements/StreamResumed.h
+++ b/Swiften/Elements/StreamResumed.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2014 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,10 +9,11 @@
 #include <string>
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class StreamResumed : public ToplevelElement {
+	class SWIFTEN_API StreamResumed : public ToplevelElement {
 		public:
 			StreamResumed();
 			~StreamResumed();
diff --git a/Swiften/Elements/Subject.h b/Swiften/Elements/Subject.h
index cd748c1..b25c31d 100644
--- a/Swiften/Elements/Subject.h
+++ b/Swiften/Elements/Subject.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <string>
 
 namespace Swift {
-	class Subject : public Payload {
+	class SWIFTEN_API Subject : public Payload {
 		public:
 			Subject(const std::string& text = "") : text_(text) {
 			}
diff --git a/Swiften/Elements/TLSProceed.h b/Swiften/Elements/TLSProceed.h
index fee6876..4e05511 100644
--- a/Swiften/Elements/TLSProceed.h
+++ b/Swiften/Elements/TLSProceed.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class TLSProceed : public ToplevelElement {
+	class SWIFTEN_API TLSProceed : public ToplevelElement {
 		public:
 			TLSProceed() {}
 	};
diff --git a/Swiften/Elements/UnblockPayload.h b/Swiften/Elements/UnblockPayload.h
index 3b6ce6c..20459e2 100644
--- a/Swiften/Elements/UnblockPayload.h
+++ b/Swiften/Elements/UnblockPayload.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <vector>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class UnblockPayload : public Payload {
+	class SWIFTEN_API UnblockPayload : public Payload {
 		public:
 			UnblockPayload(const std::vector<JID>& jids = std::vector<JID>()) : items(jids) {
 			}
diff --git a/Swiften/Elements/UnknownElement.h b/Swiften/Elements/UnknownElement.h
index 2d4593b..1d71e6b 100644
--- a/Swiften/Elements/UnknownElement.h
+++ b/Swiften/Elements/UnknownElement.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ToplevelElement.h>
 
 namespace Swift {
-	class UnknownElement : public ToplevelElement {
+	class SWIFTEN_API UnknownElement : public ToplevelElement {
 		public:
 			UnknownElement() {}
 	};
diff --git a/Swiften/Elements/VCard.h b/Swiften/Elements/VCard.h
index 3e720b5..54f52c2 100644
--- a/Swiften/Elements/VCard.h
+++ b/Swiften/Elements/VCard.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,12 +10,13 @@
 #include <boost/date_time/posix_time/ptime.hpp>
 
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Base/ByteArray.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class VCard : public Payload {
+	class SWIFTEN_API VCard : public Payload {
 		public:
 			typedef boost::shared_ptr<VCard> ref;
 
diff --git a/Swiften/Elements/VCardUpdate.h b/Swiften/Elements/VCardUpdate.h
index 6df0233..ded26c9 100644
--- a/Swiften/Elements/VCardUpdate.h
+++ b/Swiften/Elements/VCardUpdate.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,10 +7,12 @@
 #pragma once
 
 #include <string>
+
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class VCardUpdate : public Payload {
+	class SWIFTEN_API VCardUpdate : public Payload {
 		public:
 			VCardUpdate(const std::string& photoHash = "") : photoHash_(photoHash) {}
 
diff --git a/Swiften/Elements/Version.h b/Swiften/Elements/Version.h
index a76a592..b14dcf0 100644
--- a/Swiften/Elements/Version.h
+++ b/Swiften/Elements/Version.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,10 +7,12 @@
 #pragma once
 
 #include <string>
+
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 
 namespace Swift {
-	class Version : public Payload {
+	class SWIFTEN_API Version : public Payload {
 		public:
 			Version(const std::string& name = "", const std::string& version = "", const std::string& os = "") : name_(name), version_(version), os_(os) { }
 
diff --git a/Swiften/Elements/Whiteboard/WhiteboardDeleteOperation.h b/Swiften/Elements/Whiteboard/WhiteboardDeleteOperation.h
index 95015c9..297e75a 100644
--- a/Swiften/Elements/Whiteboard/WhiteboardDeleteOperation.h
+++ b/Swiften/Elements/Whiteboard/WhiteboardDeleteOperation.h
@@ -4,14 +4,20 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardOperation.h>
-
 #include <Swiften/Elements/Whiteboard/WhiteboardElement.h>
 
 namespace Swift {
-	class WhiteboardDeleteOperation : public WhiteboardOperation {
+	class SWIFTEN_API WhiteboardDeleteOperation : public WhiteboardOperation {
 	public:
 		typedef boost::shared_ptr<WhiteboardDeleteOperation> ref;
 	public:
diff --git a/Swiften/Elements/Whiteboard/WhiteboardEllipseElement.h b/Swiften/Elements/Whiteboard/WhiteboardEllipseElement.h
index 0078479..88d0907 100644
--- a/Swiften/Elements/Whiteboard/WhiteboardEllipseElement.h
+++ b/Swiften/Elements/Whiteboard/WhiteboardEllipseElement.h
@@ -4,13 +4,20 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardElement.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardColor.h>
 
 namespace Swift {
-	class WhiteboardEllipseElement : public WhiteboardElement {
+	class SWIFTEN_API WhiteboardEllipseElement : public WhiteboardElement {
 	public:
 		typedef boost::shared_ptr<WhiteboardEllipseElement> ref;
 	public:
diff --git a/Swiften/Elements/Whiteboard/WhiteboardFreehandPathElement.h b/Swiften/Elements/Whiteboard/WhiteboardFreehandPathElement.h
index bcf3bf9..6e200fd 100644
--- a/Swiften/Elements/Whiteboard/WhiteboardFreehandPathElement.h
+++ b/Swiften/Elements/Whiteboard/WhiteboardFreehandPathElement.h
@@ -4,8 +4,15 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardElement.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardColor.h>
 
@@ -13,7 +20,7 @@
 #include <utility>
 
 namespace Swift {
-	class WhiteboardFreehandPathElement : public WhiteboardElement {
+	class SWIFTEN_API WhiteboardFreehandPathElement : public WhiteboardElement {
 		typedef std::pair<int, int> Point;
 	public:
 		typedef boost::shared_ptr<WhiteboardFreehandPathElement> ref;
diff --git a/Swiften/Elements/Whiteboard/WhiteboardInsertOperation.h b/Swiften/Elements/Whiteboard/WhiteboardInsertOperation.h
index fd52405..d52adc2 100644
--- a/Swiften/Elements/Whiteboard/WhiteboardInsertOperation.h
+++ b/Swiften/Elements/Whiteboard/WhiteboardInsertOperation.h
@@ -4,14 +4,20 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardOperation.h>
-
 #include <Swiften/Elements/Whiteboard/WhiteboardElement.h>
 
 namespace Swift {
-	class WhiteboardInsertOperation : public WhiteboardOperation {
+	class SWIFTEN_API WhiteboardInsertOperation : public WhiteboardOperation {
 	public:
 		typedef boost::shared_ptr<WhiteboardInsertOperation> ref;
 	public:
diff --git a/Swiften/Elements/Whiteboard/WhiteboardLineElement.h b/Swiften/Elements/Whiteboard/WhiteboardLineElement.h
index 51aab35..267fb33 100644
--- a/Swiften/Elements/Whiteboard/WhiteboardLineElement.h
+++ b/Swiften/Elements/Whiteboard/WhiteboardLineElement.h
@@ -5,7 +5,7 @@
  */
 
 /*
- * Copyright (c) 2014 Isode Limited.
+ * Copyright (c) 2014-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -13,11 +13,12 @@
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardElement.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardColor.h>
 
 namespace Swift {
-	class WhiteboardLineElement : public WhiteboardElement {
+	class SWIFTEN_API WhiteboardLineElement : public WhiteboardElement {
 	public:
 		typedef boost::shared_ptr<WhiteboardLineElement> ref;
 	public:
diff --git a/Swiften/Elements/Whiteboard/WhiteboardPolygonElement.h b/Swiften/Elements/Whiteboard/WhiteboardPolygonElement.h
index 679ac01..f885d3b 100644
--- a/Swiften/Elements/Whiteboard/WhiteboardPolygonElement.h
+++ b/Swiften/Elements/Whiteboard/WhiteboardPolygonElement.h
@@ -4,13 +4,20 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardElement.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardColor.h>
 
 namespace Swift {
-	class WhiteboardPolygonElement : public WhiteboardElement {
+	class SWIFTEN_API WhiteboardPolygonElement : public WhiteboardElement {
 		typedef std::pair<int, int> Point;
 	public:
 		typedef boost::shared_ptr<WhiteboardPolygonElement> ref;
diff --git a/Swiften/Elements/Whiteboard/WhiteboardRectElement.h b/Swiften/Elements/Whiteboard/WhiteboardRectElement.h
index 75afb4e..f22ab5c 100644
--- a/Swiften/Elements/Whiteboard/WhiteboardRectElement.h
+++ b/Swiften/Elements/Whiteboard/WhiteboardRectElement.h
@@ -5,18 +5,19 @@
  */
 
 /*
- * Copyright (c) 2014 Isode Limited.
+ * Copyright (c) 2014-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardElement.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardColor.h>
 
 namespace Swift {
-	class WhiteboardRectElement : public WhiteboardElement {
+	class SWIFTEN_API WhiteboardRectElement : public WhiteboardElement {
 	public:
 		typedef boost::shared_ptr<WhiteboardRectElement> ref;
 	public:
diff --git a/Swiften/Elements/Whiteboard/WhiteboardTextElement.h b/Swiften/Elements/Whiteboard/WhiteboardTextElement.h
index 7118ac9..bd9b579 100644
--- a/Swiften/Elements/Whiteboard/WhiteboardTextElement.h
+++ b/Swiften/Elements/Whiteboard/WhiteboardTextElement.h
@@ -4,13 +4,20 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardElement.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardColor.h>
 
 namespace Swift {
-	class WhiteboardTextElement : public WhiteboardElement {
+	class SWIFTEN_API WhiteboardTextElement : public WhiteboardElement {
 	public:
 		typedef boost::shared_ptr<WhiteboardTextElement> ref;
 	public:
diff --git a/Swiften/Elements/Whiteboard/WhiteboardUpdateOperation.h b/Swiften/Elements/Whiteboard/WhiteboardUpdateOperation.h
index a68cc7d..af07e8f 100644
--- a/Swiften/Elements/Whiteboard/WhiteboardUpdateOperation.h
+++ b/Swiften/Elements/Whiteboard/WhiteboardUpdateOperation.h
@@ -4,14 +4,20 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardOperation.h>
-
 #include <Swiften/Elements/Whiteboard/WhiteboardElement.h>
 
 namespace Swift {
-	class WhiteboardUpdateOperation : public WhiteboardOperation {
+	class SWIFTEN_API WhiteboardUpdateOperation : public WhiteboardOperation {
 	public:
 		typedef boost::shared_ptr<WhiteboardUpdateOperation> ref;
 	public:
diff --git a/Swiften/Elements/WhiteboardPayload.h b/Swiften/Elements/WhiteboardPayload.h
index ceb2b27..3fcaa33 100644
--- a/Swiften/Elements/WhiteboardPayload.h
+++ b/Swiften/Elements/WhiteboardPayload.h
@@ -4,16 +4,23 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Payload.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardElement.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardOperation.h>
 
 namespace Swift {
-	class WhiteboardPayload : public Payload {
+	class SWIFTEN_API WhiteboardPayload : public Payload {
 	public:
 		typedef boost::shared_ptr<WhiteboardPayload> ref;
 
diff --git a/Swiften/Entity/GenericPayloadPersister.h b/Swiften/Entity/GenericPayloadPersister.h
index 258bf4e..6f07c3b 100644
--- a/Swiften/Entity/GenericPayloadPersister.h
+++ b/Swiften/Entity/GenericPayloadPersister.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Entity/PayloadPersister.h>
 #include <Swiften/Parser/GenericPayloadParserFactory.h>
 
 namespace Swift {
 	template<typename PAYLOAD, typename PARSER, typename SERIALIZER>
-	class GenericPayloadPersister : public PayloadPersister {
+	class SWIFTEN_API GenericPayloadPersister : public PayloadPersister {
 		public:
 			GenericPayloadPersister() {
 			}
diff --git a/Swiften/FileTransfer/ByteArrayReadBytestream.h b/Swiften/FileTransfer/ByteArrayReadBytestream.h
index 108fcef..308d8c5 100644
--- a/Swiften/FileTransfer/ByteArrayReadBytestream.h
+++ b/Swiften/FileTransfer/ByteArrayReadBytestream.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2013 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <vector>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/FileTransfer/ReadBytestream.h>
 #include <Swiften/Base/ByteArray.h>
 
 namespace Swift {
-	class ByteArrayReadBytestream : public ReadBytestream {
+	class SWIFTEN_API ByteArrayReadBytestream : public ReadBytestream {
 		public:
 			ByteArrayReadBytestream(const std::vector<unsigned char>& data) : data(data), position(0), dataComplete(true) {
 			}
diff --git a/Swiften/FileTransfer/ByteArrayWriteBytestream.h b/Swiften/FileTransfer/ByteArrayWriteBytestream.h
index c2c5188..938b1d4 100644
--- a/Swiften/FileTransfer/ByteArrayWriteBytestream.h
+++ b/Swiften/FileTransfer/ByteArrayWriteBytestream.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/FileTransfer/WriteBytestream.h>
 
 namespace Swift {
-	class ByteArrayWriteBytestream : public WriteBytestream {
+	class SWIFTEN_API ByteArrayWriteBytestream : public WriteBytestream {
 		public:
 			ByteArrayWriteBytestream() {
 			}
diff --git a/Swiften/FileTransfer/BytestreamException.h b/Swiften/FileTransfer/BytestreamException.h
index ff1b11b..202315e 100644
--- a/Swiften/FileTransfer/BytestreamException.h
+++ b/Swiften/FileTransfer/BytestreamException.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,8 +8,10 @@
 
 #include <stdexcept>
 
+#include <Swiften/Base/API.h>
+
 namespace Swift {
-	class BytestreamException : public std::exception {
+	class SWIFTEN_API BytestreamException : public std::exception {
 		public:
 			BytestreamException() {
 			}
diff --git a/Swiften/FileTransfer/BytestreamsRequest.h b/Swiften/FileTransfer/BytestreamsRequest.h
index c5dad28..65fda9a 100644
--- a/Swiften/FileTransfer/BytestreamsRequest.h
+++ b/Swiften/FileTransfer/BytestreamsRequest.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/GenericRequest.h>
 #include <Swiften/Elements/Bytestreams.h>
 
 namespace Swift {
-	class BytestreamsRequest : public GenericRequest<Bytestreams> {
+	class SWIFTEN_API BytestreamsRequest : public GenericRequest<Bytestreams> {
 		public:
 			typedef boost::shared_ptr<BytestreamsRequest> ref;
 
diff --git a/Swiften/FileTransfer/FileTransfer.h b/Swiften/FileTransfer/FileTransfer.h
index f90a6b4..01c8295 100644
--- a/Swiften/FileTransfer/FileTransfer.h
+++ b/Swiften/FileTransfer/FileTransfer.h
@@ -5,7 +5,7 @@
  */
 
 /*
- * Copyright (c) 2013 Isode Limited.
+ * Copyright (c) 2013-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -16,11 +16,12 @@
 #include <boost/optional.hpp>
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/FileTransfer/FileTransferError.h>
 
 namespace Swift {
-	class FileTransfer {
+	class SWIFTEN_API FileTransfer {
 		public:
 			struct State {
 				enum Type {
diff --git a/Swiften/FileTransfer/FileTransferError.h b/Swiften/FileTransfer/FileTransferError.h
index a37d98c..67e32f2 100644
--- a/Swiften/FileTransfer/FileTransferError.h
+++ b/Swiften/FileTransfer/FileTransferError.h
@@ -1,13 +1,15 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
+
 namespace Swift {
-	class FileTransferError {
+	class SWIFTEN_API FileTransferError {
 		public:
 			enum Type {
 				UnknownError,
diff --git a/Swiften/FileTransfer/IBBRequest.h b/Swiften/FileTransfer/IBBRequest.h
index 277ca09..1eef64b 100644
--- a/Swiften/FileTransfer/IBBRequest.h
+++ b/Swiften/FileTransfer/IBBRequest.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/GenericRequest.h>
 #include <Swiften/Elements/IBB.h>
 
 
 namespace Swift {
-	class IBBRequest : public GenericRequest<IBB> {
+	class SWIFTEN_API IBBRequest : public GenericRequest<IBB> {
 		public:
 			typedef boost::shared_ptr<IBBRequest> ref;
 
diff --git a/Swiften/FileTransfer/IncomingFileTransfer.h b/Swiften/FileTransfer/IncomingFileTransfer.h
index 93ecf1a..16905b8 100644
--- a/Swiften/FileTransfer/IncomingFileTransfer.h
+++ b/Swiften/FileTransfer/IncomingFileTransfer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/FileTransfer/FileTransfer.h>
 #include <Swiften/FileTransfer/FileTransferOptions.h>
@@ -20,7 +21,7 @@ namespace Swift {
 	 * @brief The IncomingFileTransfer abstract class is the general interface in Swiften
 	 * for incoming file transfers.
 	 */
-	class IncomingFileTransfer : public FileTransfer {
+	class SWIFTEN_API IncomingFileTransfer : public FileTransfer {
 		public:
 			typedef boost::shared_ptr<IncomingFileTransfer> ref;
 
diff --git a/Swiften/FileTransfer/IncomingFileTransferManager.h b/Swiften/FileTransfer/IncomingFileTransferManager.h
index 94ddd1d..6edf53b 100644
--- a/Swiften/FileTransfer/IncomingFileTransferManager.h
+++ b/Swiften/FileTransfer/IncomingFileTransferManager.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2013 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/FileTransfer/IncomingFileTransfer.h>
 #include <Swiften/Jingle/IncomingJingleSessionHandler.h>
@@ -19,7 +20,7 @@ namespace Swift {
 	class TimerFactory;
 	class CryptoProvider;
 
-	class IncomingFileTransferManager : public IncomingJingleSessionHandler {
+	class SWIFTEN_API IncomingFileTransferManager : public IncomingJingleSessionHandler {
 		public:
 			IncomingFileTransferManager(
 					JingleSessionManager* jingleSessionManager, 
diff --git a/Swiften/FileTransfer/OutgoingFileTransfer.h b/Swiften/FileTransfer/OutgoingFileTransfer.h
index ad89e60..358cc2f 100644
--- a/Swiften/FileTransfer/OutgoingFileTransfer.h
+++ b/Swiften/FileTransfer/OutgoingFileTransfer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/FileTransfer/FileTransfer.h>
 
 namespace Swift {
-	class OutgoingFileTransfer : public FileTransfer {
+	class SWIFTEN_API OutgoingFileTransfer : public FileTransfer {
 		public:
 			typedef boost::shared_ptr<OutgoingFileTransfer> ref;
 		public:
diff --git a/Swiften/FileTransfer/OutgoingFileTransferManager.h b/Swiften/FileTransfer/OutgoingFileTransferManager.h
index f97bc9b..1ad992e 100644
--- a/Swiften/FileTransfer/OutgoingFileTransferManager.h
+++ b/Swiften/FileTransfer/OutgoingFileTransferManager.h
@@ -14,6 +14,8 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
+
 namespace Swift {
 	class JingleSessionManager;
 	class IQRouter;
@@ -27,7 +29,7 @@ namespace Swift {
 	class FileTransferOptions;
 	class TimerFactory;
 
-	class OutgoingFileTransferManager {
+	class SWIFTEN_API OutgoingFileTransferManager {
 		public:
 			OutgoingFileTransferManager(
 					JingleSessionManager* jingleSessionManager, 
diff --git a/Swiften/FileTransfer/OutgoingSIFileTransfer.h b/Swiften/FileTransfer/OutgoingSIFileTransfer.h
index 9b51b0a..c323a77 100644
--- a/Swiften/FileTransfer/OutgoingSIFileTransfer.h
+++ b/Swiften/FileTransfer/OutgoingSIFileTransfer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2013 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/FileTransfer/OutgoingFileTransfer.h>
 #include <Swiften/FileTransfer/ReadBytestream.h>
 #include <Swiften/Base/boost_bsignals.h>
@@ -23,7 +24,7 @@ namespace Swift {
 	class IQRouter;
 	class SOCKS5BytestreamServer;
 
-	class OutgoingSIFileTransfer : public OutgoingFileTransfer {
+	class SWIFTEN_API OutgoingSIFileTransfer : public OutgoingFileTransfer {
 		public:
 			OutgoingSIFileTransfer(const std::string& id, const JID& from, const JID& to, const std::string& name, unsigned long long size, const std::string& description, boost::shared_ptr<ReadBytestream> bytestream, IQRouter* iqRouter, SOCKS5BytestreamServer* socksServer);
 
diff --git a/Swiften/FileTransfer/SOCKS5BytestreamProxyFinder.h b/Swiften/FileTransfer/SOCKS5BytestreamProxyFinder.h
index 54c2075..c5ad72a 100644
--- a/Swiften/FileTransfer/SOCKS5BytestreamProxyFinder.h
+++ b/Swiften/FileTransfer/SOCKS5BytestreamProxyFinder.h
@@ -15,6 +15,7 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Disco/DiscoServiceWalker.h>
 #include <Swiften/Network/HostAddressPort.h>
 #include <Swiften/Elements/S5BProxyRequest.h>
@@ -28,7 +29,7 @@ class IQRouter;
  * This class is designed to find possible SOCKS5 bytestream proxies which are used for peer-to-peer data transfers in
  * restrictive environments.
  */
-class SOCKS5BytestreamProxyFinder {
+class SWIFTEN_API SOCKS5BytestreamProxyFinder {
 	public:
 		SOCKS5BytestreamProxyFinder(const JID& service, IQRouter *iqRouter);
 		~SOCKS5BytestreamProxyFinder();
diff --git a/Swiften/FileTransfer/SOCKS5BytestreamServer.h b/Swiften/FileTransfer/SOCKS5BytestreamServer.h
index 721e6e5..c11de84 100644
--- a/Swiften/FileTransfer/SOCKS5BytestreamServer.h
+++ b/Swiften/FileTransfer/SOCKS5BytestreamServer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2013 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -11,6 +11,7 @@
 
 #include <Swiften/Network/ConnectionServer.h>
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/FileTransfer/ReadBytestream.h>
 #include <Swiften/FileTransfer/SOCKS5BytestreamRegistry.h>
@@ -19,7 +20,7 @@ namespace Swift {
 	class SOCKS5BytestreamServerSession;
 	class CryptoProvider;
 
-	class SOCKS5BytestreamServer {
+	class SWIFTEN_API SOCKS5BytestreamServer {
 		public:
 			SOCKS5BytestreamServer(
 					boost::shared_ptr<ConnectionServer> connectionServer, 
diff --git a/Swiften/FileTransfer/SOCKS5BytestreamServerManager.h b/Swiften/FileTransfer/SOCKS5BytestreamServerManager.h
index e8a43f9..180745d 100644
--- a/Swiften/FileTransfer/SOCKS5BytestreamServerManager.h
+++ b/Swiften/FileTransfer/SOCKS5BytestreamServerManager.h
@@ -10,6 +10,7 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/weak_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/Network/HostAddressPort.h>
 #include <Swiften/Network/NATPortMapping.h>
@@ -27,7 +28,7 @@ namespace Swift {
 	class SOCKS5BytestreamServerResourceUser;
 	class SOCKS5BytestreamServerPortForwardingUser;
 
-	class SOCKS5BytestreamServerManager {
+	class SWIFTEN_API SOCKS5BytestreamServerManager {
 		friend class SOCKS5BytestreamServerResourceUser;
 		friend class SOCKS5BytestreamServerPortForwardingUser;
 
diff --git a/Swiften/FileTransfer/SOCKS5BytestreamServerPortForwardingUser.h b/Swiften/FileTransfer/SOCKS5BytestreamServerPortForwardingUser.h
index c4550d3..cd79ecc 100644
--- a/Swiften/FileTransfer/SOCKS5BytestreamServerPortForwardingUser.h
+++ b/Swiften/FileTransfer/SOCKS5BytestreamServerPortForwardingUser.h
@@ -6,13 +6,14 @@
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 
 namespace Swift {
 
 class SOCKS5BytestreamServerManager;
 
-class SOCKS5BytestreamServerPortForwardingUser {
+class SWIFTEN_API SOCKS5BytestreamServerPortForwardingUser {
 	public:
 		SOCKS5BytestreamServerPortForwardingUser(SOCKS5BytestreamServerManager* s5bServerManager);
 		~SOCKS5BytestreamServerPortForwardingUser();
diff --git a/Swiften/FileTransfer/SOCKS5BytestreamServerResourceUser.h b/Swiften/FileTransfer/SOCKS5BytestreamServerResourceUser.h
index fa7f42c..15c4fc7 100644
--- a/Swiften/FileTransfer/SOCKS5BytestreamServerResourceUser.h
+++ b/Swiften/FileTransfer/SOCKS5BytestreamServerResourceUser.h
@@ -7,12 +7,13 @@
 #pragma once
 
 #include <Swiften/Base/boost_bsignals.h>
+#include <Swiften/Base/API.h>
 
 namespace Swift {
 
 class SOCKS5BytestreamServerManager;
 
-class SOCKS5BytestreamServerResourceUser {
+class SWIFTEN_API SOCKS5BytestreamServerResourceUser {
 	public:
 		SOCKS5BytestreamServerResourceUser(SOCKS5BytestreamServerManager* s5bServerManager);
 		~SOCKS5BytestreamServerResourceUser();
diff --git a/Swiften/FileTransfer/StreamInitiationRequest.h b/Swiften/FileTransfer/StreamInitiationRequest.h
index b846b90..7046eda 100644
--- a/Swiften/FileTransfer/StreamInitiationRequest.h
+++ b/Swiften/FileTransfer/StreamInitiationRequest.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/GenericRequest.h>
 #include <Swiften/Elements/StreamInitiation.h>
 
 
 namespace Swift {
-	class StreamInitiationRequest : public GenericRequest<StreamInitiation> {
+	class SWIFTEN_API StreamInitiationRequest : public GenericRequest<StreamInitiation> {
 		public:
 			typedef boost::shared_ptr<StreamInitiationRequest> ref;
 
diff --git a/Swiften/History/HistoryMessage.h b/Swiften/History/HistoryMessage.h
index 50aa828..cf33b0c 100644
--- a/Swiften/History/HistoryMessage.h
+++ b/Swiften/History/HistoryMessage.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,10 +7,11 @@
 #pragma once
 
 #include <Swiften/JID/JID.h>
+#include <Swiften/Base/API.h>
 #include <boost/date_time/posix_time/posix_time_types.hpp>
 
 namespace Swift {
-	class HistoryMessage {
+	class SWIFTEN_API HistoryMessage {
 		public:
 			enum Type {
 				Chat = 0,
diff --git a/Swiften/History/HistoryStorage.h b/Swiften/History/HistoryStorage.h
index 08173bf..99ade51 100644
--- a/Swiften/History/HistoryStorage.h
+++ b/Swiften/History/HistoryStorage.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 #include <set>
 #include <map>
 #include <vector>
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/History/HistoryMessage.h>
 #include <boost/date_time/gregorian/gregorian_types.hpp>
@@ -16,7 +17,7 @@
 namespace Swift {
 	typedef std::map<JID, std::set<boost::gregorian::date> > ContactsMap;
 
-	class HistoryStorage {
+	class SWIFTEN_API HistoryStorage {
 		/**
 		 * Messages are stored using localtime timestamps.
 		 */
diff --git a/Swiften/Jingle/IncomingJingleSessionHandler.h b/Swiften/Jingle/IncomingJingleSessionHandler.h
index 3b04bd2..fba9acc 100644
--- a/Swiften/Jingle/IncomingJingleSessionHandler.h
+++ b/Swiften/Jingle/IncomingJingleSessionHandler.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Jingle/JingleSession.h>
 
 namespace Swift {
-	class IncomingJingleSessionHandler {
+	class SWIFTEN_API IncomingJingleSessionHandler {
 		public:
 			virtual ~IncomingJingleSessionHandler();
 
diff --git a/Swiften/Jingle/JingleContentID.h b/Swiften/Jingle/JingleContentID.h
index 4705c2d..2d842fa 100644
--- a/Swiften/Jingle/JingleContentID.h
+++ b/Swiften/Jingle/JingleContentID.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JingleContentPayload.h>
 
 namespace Swift {
-	class JingleContentID {
+	class SWIFTEN_API JingleContentID {
 		public:
 			JingleContentID(const std::string& name, JingleContentPayload::Creator creator) : name(name), creator(creator) {
 			}
diff --git a/Swiften/Jingle/JingleResponder.h b/Swiften/Jingle/JingleResponder.h
index 92d0bfd..cf01e6f 100644
--- a/Swiften/Jingle/JingleResponder.h
+++ b/Swiften/Jingle/JingleResponder.h
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/SetResponder.h>
 #include <Swiften/Elements/JinglePayload.h>
 
@@ -13,7 +14,7 @@ namespace Swift {
 	class IQRouter;
 	class JingleSessionManager;
 
-	class JingleResponder : public SetResponder<JinglePayload> {
+	class SWIFTEN_API JingleResponder : public SetResponder<JinglePayload> {
 		public:
 			JingleResponder(JingleSessionManager* sessionManager, IQRouter* router);
 			virtual ~JingleResponder();
diff --git a/Swiften/Jingle/JingleSession.h b/Swiften/Jingle/JingleSession.h
index 530777f..7d7d45e 100644
--- a/Swiften/Jingle/JingleSession.h
+++ b/Swiften/Jingle/JingleSession.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2013 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -11,6 +11,7 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/Listenable.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/JID/JID.h>
@@ -20,7 +21,7 @@ namespace Swift {
 	class JingleSessionListener;
 	class JingleContentID;
 
-	class JingleSession : public Listenable<JingleSessionListener> {
+	class SWIFTEN_API JingleSession : public Listenable<JingleSessionListener> {
 		public:
 			typedef boost::shared_ptr<JingleSession> ref;
 
diff --git a/Swiften/LinkLocal/IncomingLinkLocalSession.h b/Swiften/LinkLocal/IncomingLinkLocalSession.h
index 65fd29c..f1aa321 100644
--- a/Swiften/LinkLocal/IncomingLinkLocalSession.h
+++ b/Swiften/LinkLocal/IncomingLinkLocalSession.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 #include <boost/shared_ptr.hpp>
 #include <Swiften/Base/boost_bsignals.h>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Session/Session.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Network/Connection.h>
@@ -20,7 +21,7 @@ namespace Swift {
 	class PayloadParserFactoryCollection;
 	class PayloadSerializerCollection;
 
-	class IncomingLinkLocalSession : public Session {
+	class SWIFTEN_API IncomingLinkLocalSession : public Session {
 		public:
 			IncomingLinkLocalSession(
 					const JID& localJID,
diff --git a/Swiften/LinkLocal/OutgoingLinkLocalSession.h b/Swiften/LinkLocal/OutgoingLinkLocalSession.h
index f12f783..b3e7b39 100644
--- a/Swiften/LinkLocal/OutgoingLinkLocalSession.h
+++ b/Swiften/LinkLocal/OutgoingLinkLocalSession.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -11,6 +11,7 @@
 #include <boost/enable_shared_from_this.hpp>
 #include <vector>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Session/Session.h>
 #include <Swiften/JID/JID.h>
 
@@ -21,7 +22,7 @@ namespace Swift {
 	class PayloadParserFactoryCollection;
 	class PayloadSerializerCollection;
 
-	class OutgoingLinkLocalSession : public Session {
+	class SWIFTEN_API OutgoingLinkLocalSession : public Session {
 		public:
 			OutgoingLinkLocalSession(
 					const JID& localJID,
diff --git a/Swiften/MUC/MUCBookmark.h b/Swiften/MUC/MUCBookmark.h
index 6b467ca..cca44be 100644
--- a/Swiften/MUC/MUCBookmark.h
+++ b/Swiften/MUC/MUCBookmark.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,11 +9,12 @@
 #include <boost/optional.hpp>
 
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Elements/Storage.h>
 
 namespace Swift {
-	class MUCBookmark {
+	class SWIFTEN_API MUCBookmark {
 		public:
 			MUCBookmark(const Storage::Room& room) {
 				name_ = room.name;
diff --git a/Swiften/Network/BoostConnectionFactory.h b/Swiften/Network/BoostConnectionFactory.h
index 6f2278f..574ea3e 100644
--- a/Swiften/Network/BoostConnectionFactory.h
+++ b/Swiften/Network/BoostConnectionFactory.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,13 +8,14 @@
 
 #include <boost/asio/io_service.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/ConnectionFactory.h>
 #include <Swiften/Network/BoostConnection.h>
 
 namespace Swift {
 	class BoostConnection;
 
-	class BoostConnectionFactory : public ConnectionFactory {
+	class SWIFTEN_API BoostConnectionFactory : public ConnectionFactory {
 		public:
 			BoostConnectionFactory(boost::shared_ptr<boost::asio::io_service>, EventLoop* eventLoop);
 
diff --git a/Swiften/Network/BoostConnectionServerFactory.h b/Swiften/Network/BoostConnectionServerFactory.h
index 9132b5c..1ef4951 100644
--- a/Swiften/Network/BoostConnectionServerFactory.h
+++ b/Swiften/Network/BoostConnectionServerFactory.h
@@ -4,17 +4,24 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
 #include <boost/asio/io_service.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/ConnectionServerFactory.h>
 #include <Swiften/Network/BoostConnectionServer.h>
 
 namespace Swift {
 	class ConnectionServer;
 
-	class BoostConnectionServerFactory : public ConnectionServerFactory {
+	class SWIFTEN_API BoostConnectionServerFactory : public ConnectionServerFactory {
 		public:
 			BoostConnectionServerFactory(boost::shared_ptr<boost::asio::io_service>, EventLoop* eventLoop);
 
diff --git a/Swiften/Network/BoostTimer.h b/Swiften/Network/BoostTimer.h
index aae1708..1562887 100644
--- a/Swiften/Network/BoostTimer.h
+++ b/Swiften/Network/BoostTimer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,13 +10,14 @@
 #include <boost/asio/deadline_timer.hpp>
 #include <boost/enable_shared_from_this.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/EventLoop/EventOwner.h>
 #include <Swiften/Network/Timer.h>
 
 namespace Swift {
 	class EventLoop;
 
-	class BoostTimer : public Timer, public EventOwner, public boost::enable_shared_from_this<BoostTimer> {
+	class SWIFTEN_API BoostTimer : public Timer, public EventOwner, public boost::enable_shared_from_this<BoostTimer> {
 		public:
 			typedef boost::shared_ptr<BoostTimer> ref;
 
diff --git a/Swiften/Network/BoostTimerFactory.h b/Swiften/Network/BoostTimerFactory.h
index d7be77f..9b97467 100644
--- a/Swiften/Network/BoostTimerFactory.h
+++ b/Swiften/Network/BoostTimerFactory.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/asio/io_service.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/TimerFactory.h>
 #include <Swiften/Network/BoostTimer.h>
 
@@ -15,7 +16,7 @@ namespace Swift {
 	class BoostTimer;
 	class EventLoop;
 
-	class BoostTimerFactory : public TimerFactory {
+	class SWIFTEN_API BoostTimerFactory : public TimerFactory {
 		public:
 			BoostTimerFactory(boost::shared_ptr<boost::asio::io_service>, EventLoop* eventLoop);
 
diff --git a/Swiften/Network/CachingDomainNameResolver.h b/Swiften/Network/CachingDomainNameResolver.h
index fa5737c..2a0b1b7 100644
--- a/Swiften/Network/CachingDomainNameResolver.h
+++ b/Swiften/Network/CachingDomainNameResolver.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012 Isode Limited.
+ * Copyright (c) 2012-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/DomainNameResolver.h>
 #include <Swiften/Network/StaticDomainNameResolver.h>
 
@@ -17,7 +18,7 @@
 namespace Swift {
 	class EventLoop;
 
-	class CachingDomainNameResolver : public DomainNameResolver {
+	class SWIFTEN_API CachingDomainNameResolver : public DomainNameResolver {
 		public:
 			CachingDomainNameResolver(DomainNameResolver* realResolver, EventLoop* eventLoop);
 			~CachingDomainNameResolver();
diff --git a/Swiften/Network/ConnectionServerFactory.h b/Swiften/Network/ConnectionServerFactory.h
index df5f912..672cac7 100644
--- a/Swiften/Network/ConnectionServerFactory.h
+++ b/Swiften/Network/ConnectionServerFactory.h
@@ -4,15 +4,22 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
 #include <boost/shared_ptr.hpp>
+#include <Swiften/Base/API.h>
 
 namespace Swift {
 	class ConnectionServer;
 	class HostAddress;
 
-	class ConnectionServerFactory {
+	class SWIFTEN_API ConnectionServerFactory {
 		public:
 			virtual ~ConnectionServerFactory();
 
diff --git a/Swiften/Network/DomainNameResolveError.h b/Swiften/Network/DomainNameResolveError.h
index 6edab56..c788537 100644
--- a/Swiften/Network/DomainNameResolveError.h
+++ b/Swiften/Network/DomainNameResolveError.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/Error.h>
 
 namespace Swift {
-	class DomainNameResolveError : public Error {
+	class SWIFTEN_API DomainNameResolveError : public Error {
 		public:
 			DomainNameResolveError() {}
 	};
diff --git a/Swiften/Network/EnvironmentProxyProvider.h b/Swiften/Network/EnvironmentProxyProvider.h
index 224d301..0afad9d 100644
--- a/Swiften/Network/EnvironmentProxyProvider.h
+++ b/Swiften/Network/EnvironmentProxyProvider.h
@@ -4,12 +4,19 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/ProxyProvider.h>
 
 namespace Swift {
-	class EnvironmentProxyProvider : public ProxyProvider {
+	class SWIFTEN_API EnvironmentProxyProvider : public ProxyProvider {
 		public:
 			EnvironmentProxyProvider();
 			virtual HostAddressPort getHTTPConnectProxy() const;
diff --git a/Swiften/Network/HTTPConnectProxiedConnectionFactory.h b/Swiften/Network/HTTPConnectProxiedConnectionFactory.h
index b4ddd4e..9d2c982 100644
--- a/Swiften/Network/HTTPConnectProxiedConnectionFactory.h
+++ b/Swiften/Network/HTTPConnectProxiedConnectionFactory.h
@@ -12,6 +12,7 @@
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/ConnectionFactory.h>
 #include <Swiften/Network/HostAddressPort.h>
 #include <Swiften/Base/SafeString.h>
@@ -22,7 +23,7 @@ namespace Swift {
 	class EventLoop;
 	class HTTPTrafficFilter;
 
-	class HTTPConnectProxiedConnectionFactory : public ConnectionFactory {
+	class SWIFTEN_API HTTPConnectProxiedConnectionFactory : public ConnectionFactory {
 		public:
 			HTTPConnectProxiedConnectionFactory(DomainNameResolver* resolver, ConnectionFactory* connectionFactory, TimerFactory* timerFactory, const std::string& proxyHost, int proxyPort, boost::shared_ptr<HTTPTrafficFilter> httpTrafficFilter = boost::shared_ptr<HTTPTrafficFilter>());
 			HTTPConnectProxiedConnectionFactory(DomainNameResolver* resolver, ConnectionFactory* connectionFactory, TimerFactory* timerFactory, const std::string& proxyHost, int proxyPort, const SafeString& authID, const SafeString& authPassword, boost::shared_ptr<HTTPTrafficFilter> httpTrafficFilter = boost::shared_ptr<HTTPTrafficFilter>());
diff --git a/Swiften/Network/NATPortMapping.h b/Swiften/Network/NATPortMapping.h
index 0f6bd95..3ddf39e 100644
--- a/Swiften/Network/NATPortMapping.h
+++ b/Swiften/Network/NATPortMapping.h
@@ -4,12 +4,19 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/HostAddress.h>
 
 namespace Swift {
-	class NATPortMapping {
+	class SWIFTEN_API NATPortMapping {
 	public:
 		enum Protocol {
 			TCP,
diff --git a/Swiften/Network/NATTraversalGetPublicIPRequest.h b/Swiften/Network/NATTraversalGetPublicIPRequest.h
index 1270db3..725afd2 100644
--- a/Swiften/Network/NATTraversalGetPublicIPRequest.h
+++ b/Swiften/Network/NATTraversalGetPublicIPRequest.h
@@ -4,13 +4,20 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/Network/HostAddress.h>
 
 namespace Swift {
-	class NATTraversalGetPublicIPRequest {
+	class SWIFTEN_API NATTraversalGetPublicIPRequest {
 		public:
 			virtual ~NATTraversalGetPublicIPRequest();
 
diff --git a/Swiften/Network/NATTraversalInterface.h b/Swiften/Network/NATTraversalInterface.h
index 09367cb..4e5f5fc 100644
--- a/Swiften/Network/NATTraversalInterface.h
+++ b/Swiften/Network/NATTraversalInterface.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * Licensed under the simplified BSD license.
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/NATPortMapping.h>
 
 namespace Swift {
-	class NATTraversalInterface {
+	class SWIFTEN_API NATTraversalInterface {
 		public:
 			virtual ~NATTraversalInterface();
 
diff --git a/Swiften/Network/NATTraversalRemovePortForwardingRequest.h b/Swiften/Network/NATTraversalRemovePortForwardingRequest.h
index 210cbcb..efbf6ea 100644
--- a/Swiften/Network/NATTraversalRemovePortForwardingRequest.h
+++ b/Swiften/Network/NATTraversalRemovePortForwardingRequest.h
@@ -4,13 +4,20 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/Network/HostAddress.h>
 
 namespace Swift {
-	class NATTraversalRemovePortForwardingRequest {
+	class SWIFTEN_API NATTraversalRemovePortForwardingRequest {
 		public:
 			struct PortMapping {
 				enum Protocol {
diff --git a/Swiften/Network/NATTraverser.h b/Swiften/Network/NATTraverser.h
index 75df3d6..e86704a 100644
--- a/Swiften/Network/NATTraverser.h
+++ b/Swiften/Network/NATTraverser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,12 +8,14 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
+
 namespace Swift {
 	class NATTraversalGetPublicIPRequest;
 	class NATTraversalForwardPortRequest;
 	class NATTraversalRemovePortForwardingRequest;
 
-	class NATTraverser {
+	class SWIFTEN_API NATTraverser {
 		public:
 			virtual ~NATTraverser();
 
diff --git a/Swiften/Network/NetworkFactories.h b/Swiften/Network/NetworkFactories.h
index a0c4bf9..81ce0c5 100644
--- a/Swiften/Network/NetworkFactories.h
+++ b/Swiften/Network/NetworkFactories.h
@@ -1,11 +1,13 @@
 /*
- * Copyright (c) 2010-2013 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
+
 namespace Swift {
 	class TimerFactory;
 	class ConnectionFactory;
@@ -24,7 +26,7 @@ namespace Swift {
 	/**
 	 * An interface collecting network factories.
 	 */
-	class NetworkFactories {
+	class SWIFTEN_API NetworkFactories {
 		public:
 			virtual ~NetworkFactories();
 
diff --git a/Swiften/Network/NetworkInterface.h b/Swiften/Network/NetworkInterface.h
index 1d302cb..0c1ba07 100644
--- a/Swiften/Network/NetworkInterface.h
+++ b/Swiften/Network/NetworkInterface.h
@@ -4,14 +4,21 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
 #include <vector>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/HostAddress.h>
 
 namespace Swift {
-	class NetworkInterface {
+	class SWIFTEN_API NetworkInterface {
 		public:
 			NetworkInterface(const std::string& name, bool loopback) : name(name), loopback(loopback) {
 			}
diff --git a/Swiften/Network/ProxiedConnection.h b/Swiften/Network/ProxiedConnection.h
index e6c9730..91488a1 100644
--- a/Swiften/Network/ProxiedConnection.h
+++ b/Swiften/Network/ProxiedConnection.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012 Isode Limited.
+ * Copyright (c) 2012-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 
 #include <boost/enable_shared_from_this.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/Connection.h>
 #include <Swiften/Network/Connector.h>
 #include <Swiften/Network/HostAddressPort.h>
@@ -24,7 +25,7 @@ namespace boost {
 namespace Swift {
 	class ConnectionFactory;
 
-	class ProxiedConnection : public Connection, public boost::enable_shared_from_this<ProxiedConnection> {
+	class SWIFTEN_API ProxiedConnection : public Connection, public boost::enable_shared_from_this<ProxiedConnection> {
 		public:
 			ProxiedConnection(DomainNameResolver* resolver, ConnectionFactory* connectionFactory, TimerFactory* timerFactory, const std::string& proxyHost, int proxyPort);
 			~ProxiedConnection();
diff --git a/Swiften/Network/ProxyProvider.h b/Swiften/Network/ProxyProvider.h
index 9a1ccee..b5e3eca 100644
--- a/Swiften/Network/ProxyProvider.h
+++ b/Swiften/Network/ProxyProvider.h
@@ -4,14 +4,21 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 #include <map>
 
 #include <Swiften/Network/HostAddressPort.h>
 #include <Swiften/Base/String.h>
+#include <Swiften/Base/API.h>
 
 namespace Swift {
-	class ProxyProvider {
+	class SWIFTEN_API ProxyProvider {
 		public:
 			ProxyProvider();
 			virtual ~ProxyProvider();
diff --git a/Swiften/Network/SOCKS5ProxiedConnection.h b/Swiften/Network/SOCKS5ProxiedConnection.h
index 2c93468..ee58d96 100644
--- a/Swiften/Network/SOCKS5ProxiedConnection.h
+++ b/Swiften/Network/SOCKS5ProxiedConnection.h
@@ -4,8 +4,15 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/ProxiedConnection.h>
 
 namespace Swift {
@@ -13,7 +20,7 @@ namespace Swift {
 	class DomainNameResolver;
 	class TimerFactory;
 
-	class SOCKS5ProxiedConnection : public ProxiedConnection {
+	class SWIFTEN_API SOCKS5ProxiedConnection : public ProxiedConnection {
 		public:
 			typedef boost::shared_ptr<SOCKS5ProxiedConnection> ref;
 
diff --git a/Swiften/Network/SOCKS5ProxiedConnectionFactory.h b/Swiften/Network/SOCKS5ProxiedConnectionFactory.h
index 4c5c585..0915a9b 100644
--- a/Swiften/Network/SOCKS5ProxiedConnectionFactory.h
+++ b/Swiften/Network/SOCKS5ProxiedConnectionFactory.h
@@ -4,8 +4,15 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/ConnectionFactory.h>
 #include <Swiften/Network/HostAddressPort.h>
 #include <Swiften/Network/HostNameOrAddress.h>
@@ -14,7 +21,7 @@ namespace Swift {
 	class DomainNameResolver;
 	class TimerFactory;
 
-	class SOCKS5ProxiedConnectionFactory : public ConnectionFactory {
+	class SWIFTEN_API SOCKS5ProxiedConnectionFactory : public ConnectionFactory {
 		public:
 			SOCKS5ProxiedConnectionFactory(DomainNameResolver* resolver, ConnectionFactory* connectionFactory, TimerFactory* timerFactory, const std::string& proxyHost, int proxyPort);
 
diff --git a/Swiften/Network/TLSConnection.h b/Swiften/Network/TLSConnection.h
index 3c2d8f7..ebf2e43 100644
--- a/Swiften/Network/TLSConnection.h
+++ b/Swiften/Network/TLSConnection.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,6 +10,7 @@
 #include <boost/enable_shared_from_this.hpp>
 #include <Swiften/Base/boost_bsignals.h>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/SafeByteArray.h>
 #include <Swiften/Network/Connection.h>
 
@@ -18,7 +19,7 @@ namespace Swift {
 	class TLSContextFactory;
 	class TLSContext;
 
-	class TLSConnection : public Connection {
+	class SWIFTEN_API TLSConnection : public Connection {
 		public:
 
 			TLSConnection(Connection::ref connection, TLSContextFactory* tlsFactory);
diff --git a/Swiften/Network/TLSConnectionFactory.h b/Swiften/Network/TLSConnectionFactory.h
index 54fba6e..3dfee06 100644
--- a/Swiften/Network/TLSConnectionFactory.h
+++ b/Swiften/Network/TLSConnectionFactory.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,13 +8,14 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Network/ConnectionFactory.h>
 #include <Swiften/TLS/TLSContextFactory.h>
 
 namespace Swift {
 	class Connection;
 
-	class TLSConnectionFactory : public ConnectionFactory {
+	class SWIFTEN_API TLSConnectionFactory : public ConnectionFactory {
 		public:
 			TLSConnectionFactory(TLSContextFactory* contextFactory, ConnectionFactory* connectionFactory);
 			virtual ~TLSConnectionFactory();
diff --git a/Swiften/Parser/AuthChallengeParser.h b/Swiften/Parser/AuthChallengeParser.h
index fbe5d7d..1278221 100644
--- a/Swiften/Parser/AuthChallengeParser.h
+++ b/Swiften/Parser/AuthChallengeParser.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/AuthChallenge.h>
 #include <string>
 
 namespace Swift {
-	class AuthChallengeParser : public GenericElementParser<AuthChallenge> {
+	class SWIFTEN_API AuthChallengeParser : public GenericElementParser<AuthChallenge> {
 		public:
 			AuthChallengeParser();
 
diff --git a/Swiften/Parser/AuthFailureParser.h b/Swiften/Parser/AuthFailureParser.h
index 4d7ad63..a494ebe 100644
--- a/Swiften/Parser/AuthFailureParser.h
+++ b/Swiften/Parser/AuthFailureParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/AuthFailure.h>
 
 namespace Swift {
-	class AuthFailureParser : public GenericElementParser<AuthFailure> {
+	class SWIFTEN_API AuthFailureParser : public GenericElementParser<AuthFailure> {
 		public:
 			AuthFailureParser() : GenericElementParser<AuthFailure>() {}
 	};
diff --git a/Swiften/Parser/AuthRequestParser.h b/Swiften/Parser/AuthRequestParser.h
index 8ae8bc8..c6510c8 100644
--- a/Swiften/Parser/AuthRequestParser.h
+++ b/Swiften/Parser/AuthRequestParser.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/AuthRequest.h>
 #include <string>
 
 namespace Swift {
-	class AuthRequestParser : public GenericElementParser<AuthRequest> {
+	class SWIFTEN_API AuthRequestParser : public GenericElementParser<AuthRequest> {
 		public:
 			AuthRequestParser();
 
diff --git a/Swiften/Parser/AuthResponseParser.h b/Swiften/Parser/AuthResponseParser.h
index e58361e..abb6585 100644
--- a/Swiften/Parser/AuthResponseParser.h
+++ b/Swiften/Parser/AuthResponseParser.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/AuthResponse.h>
 #include <string>
 
 namespace Swift {
-	class AuthResponseParser : public GenericElementParser<AuthResponse> {
+	class SWIFTEN_API AuthResponseParser : public GenericElementParser<AuthResponse> {
 		public:
 			AuthResponseParser();
 
diff --git a/Swiften/Parser/AuthSuccessParser.h b/Swiften/Parser/AuthSuccessParser.h
index 2d06a1c..b16f80e 100644
--- a/Swiften/Parser/AuthSuccessParser.h
+++ b/Swiften/Parser/AuthSuccessParser.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/AuthSuccess.h>
 #include <string>
 
 namespace Swift {
-	class AuthSuccessParser : public GenericElementParser<AuthSuccess> {
+	class SWIFTEN_API AuthSuccessParser : public GenericElementParser<AuthSuccess> {
 		public:
 			AuthSuccessParser();
 
diff --git a/Swiften/Parser/ComponentHandshakeParser.h b/Swiften/Parser/ComponentHandshakeParser.h
index 8f3a647..61739d9 100644
--- a/Swiften/Parser/ComponentHandshakeParser.h
+++ b/Swiften/Parser/ComponentHandshakeParser.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/ComponentHandshake.h>
 #include <string>
 
 namespace Swift {
-	class ComponentHandshakeParser : public GenericElementParser<ComponentHandshake> {
+	class SWIFTEN_API ComponentHandshakeParser : public GenericElementParser<ComponentHandshake> {
 		public:
 			ComponentHandshakeParser();
 
diff --git a/Swiften/Parser/CompressFailureParser.h b/Swiften/Parser/CompressFailureParser.h
index ddb6eef..eca53aa 100644
--- a/Swiften/Parser/CompressFailureParser.h
+++ b/Swiften/Parser/CompressFailureParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/CompressFailure.h>
 
 namespace Swift {
-	class CompressFailureParser : public GenericElementParser<CompressFailure> {
+	class SWIFTEN_API CompressFailureParser : public GenericElementParser<CompressFailure> {
 		public:
 			CompressFailureParser() : GenericElementParser<CompressFailure>() {}
 	};
diff --git a/Swiften/Parser/CompressParser.h b/Swiften/Parser/CompressParser.h
index c9799a8..9b22db2 100644
--- a/Swiften/Parser/CompressParser.h
+++ b/Swiften/Parser/CompressParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,11 +7,12 @@
 #pragma once
 
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/CompressRequest.h>
 
 namespace Swift {
-	class CompressParser : public GenericElementParser<CompressRequest> {
+	class SWIFTEN_API CompressParser : public GenericElementParser<CompressRequest> {
 		public:
 			CompressParser();
 
diff --git a/Swiften/Parser/CompressedParser.h b/Swiften/Parser/CompressedParser.h
index cad32bc..33f56b2 100644
--- a/Swiften/Parser/CompressedParser.h
+++ b/Swiften/Parser/CompressedParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/Compressed.h>
 
 namespace Swift {
-	class CompressedParser : public GenericElementParser<Compressed> {
+	class SWIFTEN_API CompressedParser : public GenericElementParser<Compressed> {
 		public:
 			CompressedParser() : GenericElementParser<Compressed>() {}
 	};
diff --git a/Swiften/Parser/EnableStreamManagementParser.h b/Swiften/Parser/EnableStreamManagementParser.h
index e323ced..54d8d40 100644
--- a/Swiften/Parser/EnableStreamManagementParser.h
+++ b/Swiften/Parser/EnableStreamManagementParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/EnableStreamManagement.h>
 
 namespace Swift {
-	class EnableStreamManagementParser : public GenericElementParser<EnableStreamManagement> {
+	class SWIFTEN_API EnableStreamManagementParser : public GenericElementParser<EnableStreamManagement> {
 		public:
 			EnableStreamManagementParser() : GenericElementParser<EnableStreamManagement>() {}
 	};
diff --git a/Swiften/Parser/GenericElementParser.h b/Swiften/Parser/GenericElementParser.h
index 274153f..9cdec23 100644
--- a/Swiften/Parser/GenericElementParser.h
+++ b/Swiften/Parser/GenericElementParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/ElementParser.h>
 
 namespace Swift {
@@ -16,7 +17,7 @@ namespace Swift {
 	class PayloadParserFactoryCollection;
 
 	template<typename ElementType>
-	class GenericElementParser : public ElementParser {
+	class SWIFTEN_API GenericElementParser : public ElementParser {
 		public:
 			GenericElementParser() {
 				stanza_ = boost::make_shared<ElementType>();
diff --git a/Swiften/Parser/GenericPayloadParser.h b/Swiften/Parser/GenericPayloadParser.h
index d833378..7bc990a 100644
--- a/Swiften/Parser/GenericPayloadParser.h
+++ b/Swiften/Parser/GenericPayloadParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParser.h>
 
 namespace Swift {
@@ -22,7 +23,7 @@ namespace Swift {
 	 * payload.
 	 */
 	template<typename PAYLOAD_TYPE>
-	class GenericPayloadParser : public PayloadParser {
+	class SWIFTEN_API GenericPayloadParser : public PayloadParser {
 		public:
 			GenericPayloadParser() : PayloadParser() {
 				payload_ = boost::make_shared<PAYLOAD_TYPE>();
diff --git a/Swiften/Parser/GenericPayloadParserFactory.h b/Swiften/Parser/GenericPayloadParserFactory.h
index b9a0cfa..fd6d403 100644
--- a/Swiften/Parser/GenericPayloadParserFactory.h
+++ b/Swiften/Parser/GenericPayloadParserFactory.h
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParserFactory.h>
 #include <string>
 
@@ -15,7 +16,7 @@ namespace Swift {
 	 * A generic class for PayloadParserFactories that parse a specific payload (given as the template parameter of the class).
 	 */
 	template<typename PARSER_TYPE>
-	class GenericPayloadParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API GenericPayloadParserFactory : public PayloadParserFactory {
 		public:
 			/**
 			 * Construct a parser factory that can parse the given top-level tag in the given namespace.
diff --git a/Swiften/Parser/GenericPayloadParserFactory2.h b/Swiften/Parser/GenericPayloadParserFactory2.h
index ee6d78c..09a2dbf 100644
--- a/Swiften/Parser/GenericPayloadParserFactory2.h
+++ b/Swiften/Parser/GenericPayloadParserFactory2.h
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParserFactory.h>
 #include <string>
 
@@ -16,7 +17,7 @@ namespace Swift {
 	 * A generic class for PayloadParserFactories that parse a specific payload (given as the template parameter of the class).
 	 */
 	template<typename PARSER_TYPE>
-	class GenericPayloadParserFactory2 : public PayloadParserFactory {
+	class SWIFTEN_API GenericPayloadParserFactory2 : public PayloadParserFactory {
 		public:
 			/**
 			 * Construct a parser factory that can parse the given top-level tag in the given namespace.
diff --git a/Swiften/Parser/GenericPayloadTreeParser.h b/Swiften/Parser/GenericPayloadTreeParser.h
index bdac85f..d90903c 100644
--- a/Swiften/Parser/GenericPayloadTreeParser.h
+++ b/Swiften/Parser/GenericPayloadTreeParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -11,6 +11,7 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 #include <Swiften/Parser/Tree/ParserElement.h>
 
@@ -19,7 +20,7 @@ namespace Swift {
 	 * Generic parser offering something a bit like a DOM to work with.
 	 */
 	template<typename PAYLOAD_TYPE>
-	class GenericPayloadTreeParser : public GenericPayloadParser<PAYLOAD_TYPE> {
+	class SWIFTEN_API GenericPayloadTreeParser : public GenericPayloadParser<PAYLOAD_TYPE> {
 		public:
 			virtual void handleStartElement(const std::string& element, const std::string& xmlns, const AttributeMap& attributes) {
 				if (!root_) {
diff --git a/Swiften/Parser/GenericStanzaParser.h b/Swiften/Parser/GenericStanzaParser.h
index f446995..c9d7f70 100644
--- a/Swiften/Parser/GenericStanzaParser.h
+++ b/Swiften/Parser/GenericStanzaParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/StanzaParser.h>
 
 namespace Swift {
@@ -16,7 +17,7 @@ namespace Swift {
 	class PayloadParserFactoryCollection;
 
 	template<typename STANZA_TYPE>
-	class GenericStanzaParser : public StanzaParser {
+	class SWIFTEN_API GenericStanzaParser : public StanzaParser {
 		public:
 			GenericStanzaParser(PayloadParserFactoryCollection* collection) : 
 						StanzaParser(collection) {
diff --git a/Swiften/Parser/PayloadParsers/BlockParser.h b/Swiften/Parser/PayloadParsers/BlockParser.h
index 0c4ac6a..2e615a5 100644
--- a/Swiften/Parser/PayloadParsers/BlockParser.h
+++ b/Swiften/Parser/PayloadParsers/BlockParser.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Nickname.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 	template<typename BLOCK_ELEMENT>
-	class BlockParser : public GenericPayloadParser<BLOCK_ELEMENT> {
+	class SWIFTEN_API BlockParser : public GenericPayloadParser<BLOCK_ELEMENT> {
 		public:
 			BlockParser() : GenericPayloadParser<BLOCK_ELEMENT>(), level(0) {
 			}
diff --git a/Swiften/Parser/PayloadParsers/BodyParser.h b/Swiften/Parser/PayloadParsers/BodyParser.h
index fa4d99f..6b6a206 100644
--- a/Swiften/Parser/PayloadParsers/BodyParser.h
+++ b/Swiften/Parser/PayloadParsers/BodyParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Body.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class BodyParser : public GenericPayloadParser<Body> {
+	class SWIFTEN_API BodyParser : public GenericPayloadParser<Body> {
 		public:
 			BodyParser();
 
diff --git a/Swiften/Parser/PayloadParsers/BytestreamsParser.h b/Swiften/Parser/PayloadParsers/BytestreamsParser.h
index 3e44d15..4180ff9 100644
--- a/Swiften/Parser/PayloadParsers/BytestreamsParser.h
+++ b/Swiften/Parser/PayloadParsers/BytestreamsParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Bytestreams.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class BytestreamsParser : public GenericPayloadParser<Bytestreams> {
+	class SWIFTEN_API BytestreamsParser : public GenericPayloadParser<Bytestreams> {
 		public:
 			BytestreamsParser();
 			~BytestreamsParser();
diff --git a/Swiften/Parser/PayloadParsers/CapsInfoParser.h b/Swiften/Parser/PayloadParsers/CapsInfoParser.h
index 27330ed..6e4610a 100644
--- a/Swiften/Parser/PayloadParsers/CapsInfoParser.h
+++ b/Swiften/Parser/PayloadParsers/CapsInfoParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/CapsInfo.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class CapsInfoParser : public GenericPayloadParser<CapsInfo> {
+	class SWIFTEN_API CapsInfoParser : public GenericPayloadParser<CapsInfo> {
 		public:
 			CapsInfoParser();
 
diff --git a/Swiften/Parser/PayloadParsers/ChatStateParser.h b/Swiften/Parser/PayloadParsers/ChatStateParser.h
index df8662f..e18e17b 100644
--- a/Swiften/Parser/PayloadParsers/ChatStateParser.h
+++ b/Swiften/Parser/PayloadParsers/ChatStateParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ChatState.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class ChatStateParser : public GenericPayloadParser<ChatState> {
+	class SWIFTEN_API ChatStateParser : public GenericPayloadParser<ChatState> {
 		public:
 			ChatStateParser();
 
diff --git a/Swiften/Parser/PayloadParsers/ChatStateParserFactory.h b/Swiften/Parser/PayloadParsers/ChatStateParserFactory.h
index 017272c..ac1c14d 100644
--- a/Swiften/Parser/PayloadParsers/ChatStateParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/ChatStateParserFactory.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/ChatStateParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
 
-	class ChatStateParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API ChatStateParserFactory : public PayloadParserFactory {
 		public:
 			ChatStateParserFactory() {
 			}
diff --git a/Swiften/Parser/PayloadParsers/CommandParser.h b/Swiften/Parser/PayloadParsers/CommandParser.h
index 61d9279..11badd4 100644
--- a/Swiften/Parser/PayloadParsers/CommandParser.h
+++ b/Swiften/Parser/PayloadParsers/CommandParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Command.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
@@ -15,7 +16,7 @@ namespace Swift {
 	class FormParserFactory;
 	class FormParser;
 
-	class CommandParser : public GenericPayloadParser<Command> {
+	class SWIFTEN_API CommandParser : public GenericPayloadParser<Command> {
 		public:
 			CommandParser();
 			~CommandParser();
diff --git a/Swiften/Parser/PayloadParsers/DelayParser.h b/Swiften/Parser/PayloadParsers/DelayParser.h
index 3a45f90..d5fa58f 100644
--- a/Swiften/Parser/PayloadParsers/DelayParser.h
+++ b/Swiften/Parser/PayloadParsers/DelayParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Delay.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class DelayParser : public GenericPayloadParser<Delay> {
+	class SWIFTEN_API DelayParser : public GenericPayloadParser<Delay> {
 		public:
 			DelayParser();
 
diff --git a/Swiften/Parser/PayloadParsers/DeliveryReceiptParser.h b/Swiften/Parser/PayloadParsers/DeliveryReceiptParser.h
index 90a0921..bcb73f3 100644
--- a/Swiften/Parser/PayloadParsers/DeliveryReceiptParser.h
+++ b/Swiften/Parser/PayloadParsers/DeliveryReceiptParser.h
@@ -4,13 +4,20 @@
  * See http://www.opensource.org/licenses/bsd-license.php for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/DeliveryReceipt.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class DeliveryReceiptParser : public GenericPayloadParser<DeliveryReceipt> {
+	class SWIFTEN_API DeliveryReceiptParser : public GenericPayloadParser<DeliveryReceipt> {
 		public:
 			DeliveryReceiptParser();
 
diff --git a/Swiften/Parser/PayloadParsers/DeliveryReceiptParserFactory.h b/Swiften/Parser/PayloadParsers/DeliveryReceiptParserFactory.h
index 259e04a..aa5d856 100644
--- a/Swiften/Parser/PayloadParsers/DeliveryReceiptParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/DeliveryReceiptParserFactory.h
@@ -4,15 +4,22 @@
  * See http://www.opensource.org/licenses/bsd-license.php for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/DeliveryReceiptParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
 
-	class DeliveryReceiptParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API DeliveryReceiptParserFactory : public PayloadParserFactory {
 		public:
 			DeliveryReceiptParserFactory() {
 			}
diff --git a/Swiften/Parser/PayloadParsers/DeliveryReceiptRequestParser.h b/Swiften/Parser/PayloadParsers/DeliveryReceiptRequestParser.h
index 55f7997..5bf27fa 100644
--- a/Swiften/Parser/PayloadParsers/DeliveryReceiptRequestParser.h
+++ b/Swiften/Parser/PayloadParsers/DeliveryReceiptRequestParser.h
@@ -4,13 +4,20 @@
  * See http://www.opensource.org/licenses/bsd-license.php for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/DeliveryReceiptRequest.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class DeliveryReceiptRequestParser : public GenericPayloadParser<DeliveryReceiptRequest> {
+	class SWIFTEN_API DeliveryReceiptRequestParser : public GenericPayloadParser<DeliveryReceiptRequest> {
 		public:
 			DeliveryReceiptRequestParser();
 
diff --git a/Swiften/Parser/PayloadParsers/DeliveryReceiptRequestParserFactory.h b/Swiften/Parser/PayloadParsers/DeliveryReceiptRequestParserFactory.h
index 9bd98c2..509db63 100644
--- a/Swiften/Parser/PayloadParsers/DeliveryReceiptRequestParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/DeliveryReceiptRequestParserFactory.h
@@ -4,15 +4,22 @@
  * See http://www.opensource.org/licenses/bsd-license.php for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/DeliveryReceiptRequestParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
 
-	class DeliveryReceiptRequestParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API DeliveryReceiptRequestParserFactory : public PayloadParserFactory {
 		public:
 			DeliveryReceiptRequestParserFactory() {
 			}
diff --git a/Swiften/Parser/PayloadParsers/DiscoItemsParser.h b/Swiften/Parser/PayloadParsers/DiscoItemsParser.h
index c603938..b467ca1 100644
--- a/Swiften/Parser/PayloadParsers/DiscoItemsParser.h
+++ b/Swiften/Parser/PayloadParsers/DiscoItemsParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/DiscoItems.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class DiscoItemsParser : public GenericPayloadParser<DiscoItems> {
+	class SWIFTEN_API DiscoItemsParser : public GenericPayloadParser<DiscoItems> {
 		public:
 			DiscoItemsParser();
 
diff --git a/Swiften/Parser/PayloadParsers/ErrorParser.h b/Swiften/Parser/PayloadParsers/ErrorParser.h
index 513b503..fc4a5cb 100644
--- a/Swiften/Parser/PayloadParsers/ErrorParser.h
+++ b/Swiften/Parser/PayloadParsers/ErrorParser.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ErrorPayload.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
-	class ErrorParser : public GenericPayloadParser<ErrorPayload> {
+	class SWIFTEN_API ErrorParser : public GenericPayloadParser<ErrorPayload> {
 		public:
 			ErrorParser(PayloadParserFactoryCollection* factories);
 
diff --git a/Swiften/Parser/PayloadParsers/ErrorParserFactory.h b/Swiften/Parser/PayloadParsers/ErrorParserFactory.h
index b7376fd..bcced8b 100644
--- a/Swiften/Parser/PayloadParsers/ErrorParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/ErrorParserFactory.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/ErrorParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
 
-	class ErrorParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API ErrorParserFactory : public PayloadParserFactory {
 		public:
 			ErrorParserFactory(PayloadParserFactoryCollection* factories) : factories(factories) {
 			}
diff --git a/Swiften/Parser/PayloadParsers/FormParser.h b/Swiften/Parser/PayloadParsers/FormParser.h
index f865a38..a3b7556 100644
--- a/Swiften/Parser/PayloadParsers/FormParser.h
+++ b/Swiften/Parser/PayloadParsers/FormParser.h
@@ -6,11 +6,12 @@
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Form.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class FormParser : public GenericPayloadParser<Form> {
+	class SWIFTEN_API FormParser : public GenericPayloadParser<Form> {
 		public:
 			FormParser();
 
diff --git a/Swiften/Parser/PayloadParsers/FormParserFactory.h b/Swiften/Parser/PayloadParsers/FormParserFactory.h
index 3551d08..74b2d35 100644
--- a/Swiften/Parser/PayloadParsers/FormParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/FormParserFactory.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/FormParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
 
-	class FormParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API FormParserFactory : public PayloadParserFactory {
 		public:
 			FormParserFactory() {
 			}
diff --git a/Swiften/Parser/PayloadParsers/IBBParser.h b/Swiften/Parser/PayloadParsers/IBBParser.h
index 8c0f77a..95fe61a 100644
--- a/Swiften/Parser/PayloadParsers/IBBParser.h
+++ b/Swiften/Parser/PayloadParsers/IBBParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/IBB.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class IBBParser : public GenericPayloadParser<IBB> {
+	class SWIFTEN_API IBBParser : public GenericPayloadParser<IBB> {
 		public:
 			IBBParser();
 			~IBBParser();
diff --git a/Swiften/Parser/PayloadParsers/IdleParser.h b/Swiften/Parser/PayloadParsers/IdleParser.h
index 38001b2..e8bbcf6 100644
--- a/Swiften/Parser/PayloadParsers/IdleParser.h
+++ b/Swiften/Parser/PayloadParsers/IdleParser.h
@@ -4,13 +4,20 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
-#pragma once
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
 
+#pragma once
+ 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Idle.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class IdleParser : public GenericPayloadParser<Idle> {
+	class SWIFTEN_API IdleParser : public GenericPayloadParser<Idle> {
 		public:
 			IdleParser();
 
diff --git a/Swiften/Parser/PayloadParsers/InBandRegistrationPayloadParser.h b/Swiften/Parser/PayloadParsers/InBandRegistrationPayloadParser.h
index 2cd061e..cd8c452 100644
--- a/Swiften/Parser/PayloadParsers/InBandRegistrationPayloadParser.h
+++ b/Swiften/Parser/PayloadParsers/InBandRegistrationPayloadParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/InBandRegistrationPayload.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
@@ -15,7 +16,7 @@ namespace Swift {
 	class FormParserFactory;
 	class FormParser;
 
-	class InBandRegistrationPayloadParser : public GenericPayloadParser<InBandRegistrationPayload> {
+	class SWIFTEN_API InBandRegistrationPayloadParser : public GenericPayloadParser<InBandRegistrationPayload> {
 		public:
 			InBandRegistrationPayloadParser();
 			~InBandRegistrationPayloadParser();
diff --git a/Swiften/Parser/PayloadParsers/JingleContentPayloadParser.h b/Swiften/Parser/PayloadParsers/JingleContentPayloadParser.h
index a871cc4..977d2eb 100644
--- a/Swiften/Parser/PayloadParsers/JingleContentPayloadParser.h
+++ b/Swiften/Parser/PayloadParsers/JingleContentPayloadParser.h
@@ -4,8 +4,15 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JingleContentPayload.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
@@ -13,7 +20,7 @@ namespace Swift {
 
 class PayloadParserFactoryCollection;
 
-class JingleContentPayloadParser : public GenericPayloadParser<JingleContentPayload> {
+class SWIFTEN_API JingleContentPayloadParser : public GenericPayloadParser<JingleContentPayload> {
 	public:
 		JingleContentPayloadParser(PayloadParserFactoryCollection* factories);
 
diff --git a/Swiften/Parser/PayloadParsers/JingleContentPayloadParserFactory.h b/Swiften/Parser/PayloadParsers/JingleContentPayloadParserFactory.h
index 6d66e74..b343c24 100644
--- a/Swiften/Parser/PayloadParsers/JingleContentPayloadParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/JingleContentPayloadParserFactory.h
@@ -4,8 +4,15 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericPayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/JingleContentPayloadParser.h>
 
@@ -13,7 +20,7 @@ namespace Swift {
 	
 	class PayloadParserFactoryCollection;
 
-	class JingleContentPayloadParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API JingleContentPayloadParserFactory : public PayloadParserFactory {
 		public:
 			JingleContentPayloadParserFactory(PayloadParserFactoryCollection* factories) : factories(factories) {
 			}
diff --git a/Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParser.h b/Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParser.h
index a1215c1..52dd232 100644
--- a/Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParser.h
+++ b/Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParser.h
@@ -5,13 +5,14 @@
  */
 
 /*
- * Copyright (c) 2014 Isode Limited.
+ * Copyright (c) 2014-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JingleFileTransferDescription.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 #include <Swiften/Parser/PayloadParser.h>
@@ -20,7 +21,7 @@ namespace Swift {
 
 class PayloadParserFactoryCollection;
 
-class JingleFileTransferDescriptionParser : public GenericPayloadParser<JingleFileTransferDescription> {
+class SWIFTEN_API JingleFileTransferDescriptionParser : public GenericPayloadParser<JingleFileTransferDescription> {
 	public:
 		JingleFileTransferDescriptionParser(PayloadParserFactoryCollection* factories);
 
diff --git a/Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParserFactory.h b/Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParserFactory.h
index 7bd4b8a..f8a340c 100644
--- a/Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParserFactory.h
@@ -5,13 +5,14 @@
  */
 
 /*
- * Copyright (c) 2014 Isode Limited.
+ * Copyright (c) 2014-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericPayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParser.h>
 
@@ -19,7 +20,7 @@ namespace Swift {
 	
 	class PayloadParserFactoryCollection;
 
-	class JingleFileTransferDescriptionParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API JingleFileTransferDescriptionParserFactory : public PayloadParserFactory {
 		public:
 			JingleFileTransferDescriptionParserFactory(PayloadParserFactoryCollection* factories) : factories(factories) {
 			}
diff --git a/Swiften/Parser/PayloadParsers/JingleFileTransferFileInfoParser.h b/Swiften/Parser/PayloadParsers/JingleFileTransferFileInfoParser.h
index eb6245c..e49ee69 100644
--- a/Swiften/Parser/PayloadParsers/JingleFileTransferFileInfoParser.h
+++ b/Swiften/Parser/PayloadParsers/JingleFileTransferFileInfoParser.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2014 Isode Limited.
+ * Copyright (c) 2014-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JingleFileTransferFileInfo.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 
-class JingleFileTransferFileInfoParser : public GenericPayloadParser<JingleFileTransferFileInfo> {
+class SWIFTEN_API JingleFileTransferFileInfoParser : public GenericPayloadParser<JingleFileTransferFileInfo> {
 	public:
 		JingleFileTransferFileInfoParser();
 
diff --git a/Swiften/Parser/PayloadParsers/JingleFileTransferHashParser.h b/Swiften/Parser/PayloadParsers/JingleFileTransferHashParser.h
index 5a7c6c5..15d3294 100644
--- a/Swiften/Parser/PayloadParsers/JingleFileTransferHashParser.h
+++ b/Swiften/Parser/PayloadParsers/JingleFileTransferHashParser.h
@@ -5,19 +5,20 @@
  */
 
 /*
- * Copyright (c) 2014 Isode Limited.
+ * Copyright (c) 2014-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JingleFileTransferHash.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 
-class JingleFileTransferHashParser : public GenericPayloadParser<JingleFileTransferHash> {
+class SWIFTEN_API JingleFileTransferHashParser : public GenericPayloadParser<JingleFileTransferHash> {
 public:
 	JingleFileTransferHashParser();
 	
diff --git a/Swiften/Parser/PayloadParsers/JingleIBBTransportMethodPayloadParser.h b/Swiften/Parser/PayloadParsers/JingleIBBTransportMethodPayloadParser.h
index 311cc5b..4e22943 100644
--- a/Swiften/Parser/PayloadParsers/JingleIBBTransportMethodPayloadParser.h
+++ b/Swiften/Parser/PayloadParsers/JingleIBBTransportMethodPayloadParser.h
@@ -4,14 +4,21 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JingleIBBTransportPayload.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 
-class JingleIBBTransportMethodPayloadParser : public GenericPayloadParser<JingleIBBTransportPayload> {
+class SWIFTEN_API JingleIBBTransportMethodPayloadParser : public GenericPayloadParser<JingleIBBTransportPayload> {
 	public:
 		JingleIBBTransportMethodPayloadParser();
 
diff --git a/Swiften/Parser/PayloadParsers/JingleParser.h b/Swiften/Parser/PayloadParsers/JingleParser.h
index c7bd58c..ad49e96 100644
--- a/Swiften/Parser/PayloadParsers/JingleParser.h
+++ b/Swiften/Parser/PayloadParsers/JingleParser.h
@@ -4,15 +4,22 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JinglePayload.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 #include <Swiften/Parser/PayloadParserFactoryCollection.h>
 
 namespace Swift {
 
-class JingleParser : public GenericPayloadParser<JinglePayload> {
+class SWIFTEN_API JingleParser : public GenericPayloadParser<JinglePayload> {
 		public:
 			JingleParser(PayloadParserFactoryCollection* factories);
 
diff --git a/Swiften/Parser/PayloadParsers/JingleParserFactory.h b/Swiften/Parser/PayloadParsers/JingleParserFactory.h
index fa25aeb..73395fc 100644
--- a/Swiften/Parser/PayloadParsers/JingleParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/JingleParserFactory.h
@@ -4,8 +4,15 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericPayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/JingleParser.h>
 
@@ -13,7 +20,7 @@ namespace Swift {
 	
 	class PayloadParserFactoryCollection;
 
-	class JingleParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API JingleParserFactory : public PayloadParserFactory {
 		public:
 			JingleParserFactory(PayloadParserFactoryCollection* factories) : factories(factories) {
 			}
diff --git a/Swiften/Parser/PayloadParsers/JingleReasonParser.h b/Swiften/Parser/PayloadParsers/JingleReasonParser.h
index 08af31a..4fe334e 100644
--- a/Swiften/Parser/PayloadParsers/JingleReasonParser.h
+++ b/Swiften/Parser/PayloadParsers/JingleReasonParser.h
@@ -4,14 +4,21 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JinglePayload.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 
-class JingleReasonParser : public GenericPayloadParser<JinglePayload::Reason> {
+class SWIFTEN_API JingleReasonParser : public GenericPayloadParser<JinglePayload::Reason> {
 	public:
 		JingleReasonParser();
 
diff --git a/Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.h b/Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.h
index 1987d3f..ccf0b1b 100644
--- a/Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.h
+++ b/Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.h
@@ -4,14 +4,21 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/JingleS5BTransportPayload.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 
-class JingleS5BTransportMethodPayloadParser : public GenericPayloadParser<JingleS5BTransportPayload> {
+class SWIFTEN_API JingleS5BTransportMethodPayloadParser : public GenericPayloadParser<JingleS5BTransportPayload> {
 	public:
 		JingleS5BTransportMethodPayloadParser();
 
diff --git a/Swiften/Parser/PayloadParsers/LastParser.h b/Swiften/Parser/PayloadParsers/LastParser.h
index 1ccdf60..58cde22 100644
--- a/Swiften/Parser/PayloadParsers/LastParser.h
+++ b/Swiften/Parser/PayloadParsers/LastParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Last.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class LastParser : public GenericPayloadParser<Last> {
+	class SWIFTEN_API LastParser : public GenericPayloadParser<Last> {
 		public:
 			LastParser();
 
diff --git a/Swiften/Parser/PayloadParsers/MUCAdminPayloadParser.h b/Swiften/Parser/PayloadParsers/MUCAdminPayloadParser.h
index 2cef4d8..9174c7d 100644
--- a/Swiften/Parser/PayloadParsers/MUCAdminPayloadParser.h
+++ b/Swiften/Parser/PayloadParsers/MUCAdminPayloadParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,12 +8,13 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/MUCAdminPayload.h>
 #include <Swiften/Parser/GenericPayloadTreeParser.h>
 #include <Swiften/Parser/PayloadParsers/MUCItemParser.h>
 
 namespace Swift {
-	class MUCAdminPayloadParser : public GenericPayloadTreeParser<MUCAdminPayload> {
+	class SWIFTEN_API MUCAdminPayloadParser : public GenericPayloadTreeParser<MUCAdminPayload> {
 		public:
 			virtual void handleTree(ParserElement::ref root);
 	};
diff --git a/Swiften/Parser/PayloadParsers/MUCDestroyPayloadParser.h b/Swiften/Parser/PayloadParsers/MUCDestroyPayloadParser.h
index 55d6ecd..1e5d545 100644
--- a/Swiften/Parser/PayloadParsers/MUCDestroyPayloadParser.h
+++ b/Swiften/Parser/PayloadParsers/MUCDestroyPayloadParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/MUCDestroyPayload.h>
 #include <Swiften/Parser/GenericPayloadTreeParser.h>
 
 namespace Swift {
-	class MUCDestroyPayloadParser : public GenericPayloadTreeParser<MUCDestroyPayload> {
+	class SWIFTEN_API MUCDestroyPayloadParser : public GenericPayloadTreeParser<MUCDestroyPayload> {
 		public:
 			virtual void handleTree(ParserElement::ref root);
 	};
diff --git a/Swiften/Parser/PayloadParsers/MUCInvitationPayloadParser.h b/Swiften/Parser/PayloadParsers/MUCInvitationPayloadParser.h
index df365e0..f79c971 100644
--- a/Swiften/Parser/PayloadParsers/MUCInvitationPayloadParser.h
+++ b/Swiften/Parser/PayloadParsers/MUCInvitationPayloadParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/MUCInvitationPayload.h>
 #include <Swiften/Parser/GenericPayloadTreeParser.h>
 
 namespace Swift {
-	class MUCInvitationPayloadParser : public GenericPayloadTreeParser<MUCInvitationPayload> {
+	class SWIFTEN_API MUCInvitationPayloadParser : public GenericPayloadTreeParser<MUCInvitationPayload> {
 		public:
 			virtual void handleTree(ParserElement::ref root);
 	};
diff --git a/Swiften/Parser/PayloadParsers/MUCItemParser.h b/Swiften/Parser/PayloadParsers/MUCItemParser.h
index ccfc610..fc5d657 100644
--- a/Swiften/Parser/PayloadParsers/MUCItemParser.h
+++ b/Swiften/Parser/PayloadParsers/MUCItemParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/MUCItem.h>
 #include <Swiften/Parser/GenericPayloadTreeParser.h>
 
 namespace Swift {
-	class MUCItemParser  {
+	class SWIFTEN_API MUCItemParser  {
 		public:
 			static MUCItem itemFromTree(ParserElement::ref root);
 		private:
diff --git a/Swiften/Parser/PayloadParsers/MUCOwnerPayloadParser.h b/Swiften/Parser/PayloadParsers/MUCOwnerPayloadParser.h
index 50d1aa6..85db82f 100644
--- a/Swiften/Parser/PayloadParsers/MUCOwnerPayloadParser.h
+++ b/Swiften/Parser/PayloadParsers/MUCOwnerPayloadParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,13 +8,14 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/MUCOwnerPayload.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
 
-	class MUCOwnerPayloadParser : public GenericPayloadParser<MUCOwnerPayload> {
+	class SWIFTEN_API MUCOwnerPayloadParser : public GenericPayloadParser<MUCOwnerPayload> {
 		public:
 		MUCOwnerPayloadParser(PayloadParserFactoryCollection* factories);
 
diff --git a/Swiften/Parser/PayloadParsers/MUCOwnerPayloadParserFactory.h b/Swiften/Parser/PayloadParsers/MUCOwnerPayloadParserFactory.h
index eb682ab..9270dc7 100644
--- a/Swiften/Parser/PayloadParsers/MUCOwnerPayloadParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/MUCOwnerPayloadParserFactory.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/MUCOwnerPayloadParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
 
-	class MUCOwnerPayloadParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API MUCOwnerPayloadParserFactory : public PayloadParserFactory {
 		public:
 			MUCOwnerPayloadParserFactory(PayloadParserFactoryCollection* factories) : factories(factories) {
 			}
diff --git a/Swiften/Parser/PayloadParsers/MUCUserPayloadParser.h b/Swiften/Parser/PayloadParsers/MUCUserPayloadParser.h
index b940604..3d7a53b 100644
--- a/Swiften/Parser/PayloadParsers/MUCUserPayloadParser.h
+++ b/Swiften/Parser/PayloadParsers/MUCUserPayloadParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,13 +8,14 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/MUCUserPayload.h>
 #include <Swiften/Parser/GenericPayloadTreeParser.h>
 #include <Swiften/Parser/PayloadParsers/MUCItemParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
-	class MUCUserPayloadParser : public GenericPayloadTreeParser<MUCUserPayload> {
+	class SWIFTEN_API MUCUserPayloadParser : public GenericPayloadTreeParser<MUCUserPayload> {
 		public:
 			MUCUserPayloadParser(PayloadParserFactoryCollection* collection) : factories(collection) {}
 			virtual void handleTree(ParserElement::ref root);
diff --git a/Swiften/Parser/PayloadParsers/MUCUserPayloadParserFactory.h b/Swiften/Parser/PayloadParsers/MUCUserPayloadParserFactory.h
index 4521ad6..4cc9134 100644
--- a/Swiften/Parser/PayloadParsers/MUCUserPayloadParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/MUCUserPayloadParserFactory.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericPayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/MUCUserPayloadParser.h>
 
 namespace Swift {
-	class MUCUserPayloadParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API MUCUserPayloadParserFactory : public PayloadParserFactory {
 		public:
 			MUCUserPayloadParserFactory(PayloadParserFactoryCollection* factories) : factories(factories) {
 			}
diff --git a/Swiften/Parser/PayloadParsers/NicknameParser.h b/Swiften/Parser/PayloadParsers/NicknameParser.h
index 653ff27..d8ac5b5 100644
--- a/Swiften/Parser/PayloadParsers/NicknameParser.h
+++ b/Swiften/Parser/PayloadParsers/NicknameParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Nickname.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class NicknameParser : public GenericPayloadParser<Nickname> {
+	class SWIFTEN_API NicknameParser : public GenericPayloadParser<Nickname> {
 		public:
 			NicknameParser();
 
diff --git a/Swiften/Parser/PayloadParsers/PriorityParser.h b/Swiften/Parser/PayloadParsers/PriorityParser.h
index d84d961..6c34e3b 100644
--- a/Swiften/Parser/PayloadParsers/PriorityParser.h
+++ b/Swiften/Parser/PayloadParsers/PriorityParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Priority.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class PriorityParser : public GenericPayloadParser<Priority> {
+	class SWIFTEN_API PriorityParser : public GenericPayloadParser<Priority> {
 		public:
 			PriorityParser();
 
diff --git a/Swiften/Parser/PayloadParsers/PrivateStorageParser.h b/Swiften/Parser/PayloadParsers/PrivateStorageParser.h
index eb10594..57e4136 100644
--- a/Swiften/Parser/PayloadParsers/PrivateStorageParser.h
+++ b/Swiften/Parser/PayloadParsers/PrivateStorageParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,13 +8,14 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/PrivateStorage.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
 
-	class PrivateStorageParser : public GenericPayloadParser<PrivateStorage> {
+	class SWIFTEN_API PrivateStorageParser : public GenericPayloadParser<PrivateStorage> {
 		public:
 			PrivateStorageParser(PayloadParserFactoryCollection* factories);
 
diff --git a/Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h b/Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h
index 6e7c1d2..e8db9af 100644
--- a/Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/PrivateStorageParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
 
-	class PrivateStorageParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API PrivateStorageParserFactory : public PayloadParserFactory {
 		public:
 			PrivateStorageParserFactory(PayloadParserFactoryCollection* factories) : factories(factories) {
 			}
diff --git a/Swiften/Parser/PayloadParsers/PubSubErrorParserFactory.h b/Swiften/Parser/PayloadParsers/PubSubErrorParserFactory.h
index 2d2b443..e421581 100644
--- a/Swiften/Parser/PayloadParsers/PubSubErrorParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/PubSubErrorParserFactory.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2013 Isode Limited.
+ * Copyright (c) 2013-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/PubSubErrorParser.h>
 
 namespace Swift {
-	class PubSubErrorParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API PubSubErrorParserFactory : public PayloadParserFactory {
 		public:
 			PubSubErrorParserFactory() {
 			}
diff --git a/Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h b/Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h
index 7b9a32f..a363098 100644
--- a/Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/RawXMLPayloadParser.h>
 #include <string>
 
 namespace Swift {
-	class RawXMLPayloadParserFactory : public PayloadParserFactory {
+	class SWIFTEN_API RawXMLPayloadParserFactory : public PayloadParserFactory {
 		public:
 			RawXMLPayloadParserFactory() {}
 
diff --git a/Swiften/Parser/PayloadParsers/ReplaceParser.h b/Swiften/Parser/PayloadParsers/ReplaceParser.h
index 4d73459..3c1fbbc 100644
--- a/Swiften/Parser/PayloadParsers/ReplaceParser.h
+++ b/Swiften/Parser/PayloadParsers/ReplaceParser.h
@@ -4,13 +4,20 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Replace.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class ReplaceParser : public GenericPayloadParser<Replace> {
+	class SWIFTEN_API ReplaceParser : public GenericPayloadParser<Replace> {
 		public:
 			ReplaceParser();
 			virtual void handleStartElement(const std::string& element, const std::string&, const AttributeMap& attributes);
diff --git a/Swiften/Parser/PayloadParsers/ResourceBindParser.h b/Swiften/Parser/PayloadParsers/ResourceBindParser.h
index fd9cf73..134bf14 100644
--- a/Swiften/Parser/PayloadParsers/ResourceBindParser.h
+++ b/Swiften/Parser/PayloadParsers/ResourceBindParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ResourceBind.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class ResourceBindParser : public GenericPayloadParser<ResourceBind> {
+	class SWIFTEN_API ResourceBindParser : public GenericPayloadParser<ResourceBind> {
 		public:
 			ResourceBindParser();
 
diff --git a/Swiften/Parser/PayloadParsers/RosterItemExchangeParser.h b/Swiften/Parser/PayloadParsers/RosterItemExchangeParser.h
index 5652b94..bf3dace 100644
--- a/Swiften/Parser/PayloadParsers/RosterItemExchangeParser.h
+++ b/Swiften/Parser/PayloadParsers/RosterItemExchangeParser.h
@@ -4,15 +4,22 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/RosterItemExchangePayload.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 	class SerializingParser;
 
-	class RosterItemExchangeParser : public GenericPayloadParser<RosterItemExchangePayload> {
+	class SWIFTEN_API RosterItemExchangeParser : public GenericPayloadParser<RosterItemExchangePayload> {
 		public:
 			RosterItemExchangeParser();
 
diff --git a/Swiften/Parser/PayloadParsers/S5BProxyRequestParser.h b/Swiften/Parser/PayloadParsers/S5BProxyRequestParser.h
index 0bf1a26..408bb5a 100644
--- a/Swiften/Parser/PayloadParsers/S5BProxyRequestParser.h
+++ b/Swiften/Parser/PayloadParsers/S5BProxyRequestParser.h
@@ -4,16 +4,23 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/S5BProxyRequest.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 
-class S5BProxyRequestParser : public GenericPayloadParser<S5BProxyRequest> {
+class SWIFTEN_API S5BProxyRequestParser : public GenericPayloadParser<S5BProxyRequest> {
 public:
 	S5BProxyRequestParser();
 	virtual ~S5BProxyRequestParser();
diff --git a/Swiften/Parser/PayloadParsers/SearchPayloadParser.h b/Swiften/Parser/PayloadParsers/SearchPayloadParser.h
index 75e64c7..bfcb86d 100644
--- a/Swiften/Parser/PayloadParsers/SearchPayloadParser.h
+++ b/Swiften/Parser/PayloadParsers/SearchPayloadParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/SearchPayload.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
@@ -15,7 +16,7 @@ namespace Swift {
 	class FormParserFactory;
 	class FormParser;
 
-	class SearchPayloadParser : public GenericPayloadParser<SearchPayload> {
+	class SWIFTEN_API SearchPayloadParser : public GenericPayloadParser<SearchPayload> {
 		public:
 			SearchPayloadParser();
 			~SearchPayloadParser();
diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelParser.h b/Swiften/Parser/PayloadParsers/SecurityLabelParser.h
index 0933fa6..857df6a 100644
--- a/Swiften/Parser/PayloadParsers/SecurityLabelParser.h
+++ b/Swiften/Parser/PayloadParsers/SecurityLabelParser.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/SecurityLabel.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 	class SerializingParser;
 
-	class SecurityLabelParser : public GenericPayloadParser<SecurityLabel> {
+	class SWIFTEN_API SecurityLabelParser : public GenericPayloadParser<SecurityLabel> {
 		public:
 			SecurityLabelParser();
 
diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h b/Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h
index fe7f889..1eabb07 100644
--- a/Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h
+++ b/Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericPayloadParserFactory.h>
 #include <Swiften/Parser/PayloadParsers/SecurityLabelParser.h>
 
 namespace Swift {
-	class SecurityLabelParserFactory : public GenericPayloadParserFactory<SecurityLabelParser> {
+	class SWIFTEN_API SecurityLabelParserFactory : public GenericPayloadParserFactory<SecurityLabelParser> {
 		public:
 			SecurityLabelParserFactory() : GenericPayloadParserFactory<SecurityLabelParser>("securitylabel", "urn:xmpp:sec-label:0") {}
 	};
diff --git a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h b/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h
index fc66379..689ebb8 100644
--- a/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h
+++ b/Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/SecurityLabelsCatalog.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
@@ -13,7 +14,7 @@ namespace Swift {
 	class SecurityLabelParserFactory;
 	class SecurityLabelParser;
 
-	class SecurityLabelsCatalogParser : public GenericPayloadParser<SecurityLabelsCatalog> {
+	class SWIFTEN_API SecurityLabelsCatalogParser : public GenericPayloadParser<SecurityLabelsCatalog> {
 		public:
 			SecurityLabelsCatalogParser();
 			~SecurityLabelsCatalogParser();
diff --git a/Swiften/Parser/PayloadParsers/SoftwareVersionParser.h b/Swiften/Parser/PayloadParsers/SoftwareVersionParser.h
index 1f4310b..a66dd1a 100644
--- a/Swiften/Parser/PayloadParsers/SoftwareVersionParser.h
+++ b/Swiften/Parser/PayloadParsers/SoftwareVersionParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/SoftwareVersion.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class SoftwareVersionParser : public GenericPayloadParser<SoftwareVersion> {
+	class SWIFTEN_API SoftwareVersionParser : public GenericPayloadParser<SoftwareVersion> {
 		public:
 			SoftwareVersionParser();
 
diff --git a/Swiften/Parser/PayloadParsers/StartSessionParser.h b/Swiften/Parser/PayloadParsers/StartSessionParser.h
index ae8a4fa..d5a9c2e 100644
--- a/Swiften/Parser/PayloadParsers/StartSessionParser.h
+++ b/Swiften/Parser/PayloadParsers/StartSessionParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StartSession.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class StartSessionParser : public GenericPayloadParser<StartSession> {
+	class SWIFTEN_API StartSessionParser : public GenericPayloadParser<StartSession> {
 		public:
 			StartSessionParser() {}
 
diff --git a/Swiften/Parser/PayloadParsers/StatusParser.h b/Swiften/Parser/PayloadParsers/StatusParser.h
index 4929f20..689897b 100644
--- a/Swiften/Parser/PayloadParsers/StatusParser.h
+++ b/Swiften/Parser/PayloadParsers/StatusParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Status.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class StatusParser : public GenericPayloadParser<Status> {
+	class SWIFTEN_API StatusParser : public GenericPayloadParser<Status> {
 		public:
 			StatusParser();
 
diff --git a/Swiften/Parser/PayloadParsers/StatusShowParser.h b/Swiften/Parser/PayloadParsers/StatusShowParser.h
index f442ab7..2bdcd56 100644
--- a/Swiften/Parser/PayloadParsers/StatusShowParser.h
+++ b/Swiften/Parser/PayloadParsers/StatusShowParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StatusShow.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class StatusShowParser : public GenericPayloadParser<StatusShow> {
+	class SWIFTEN_API StatusShowParser : public GenericPayloadParser<StatusShow> {
 		public:
 			StatusShowParser();
 
diff --git a/Swiften/Parser/PayloadParsers/StorageParser.h b/Swiften/Parser/PayloadParsers/StorageParser.h
index 0cbf288..0fea4c9 100644
--- a/Swiften/Parser/PayloadParsers/StorageParser.h
+++ b/Swiften/Parser/PayloadParsers/StorageParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Storage.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class StorageParser : public GenericPayloadParser<Storage> {
+	class SWIFTEN_API StorageParser : public GenericPayloadParser<Storage> {
 		public:
 			StorageParser();
 
diff --git a/Swiften/Parser/PayloadParsers/StreamInitiationFileInfoParser.h b/Swiften/Parser/PayloadParsers/StreamInitiationFileInfoParser.h
index 6d3591d..722797d 100644
--- a/Swiften/Parser/PayloadParsers/StreamInitiationFileInfoParser.h
+++ b/Swiften/Parser/PayloadParsers/StreamInitiationFileInfoParser.h
@@ -4,14 +4,21 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StreamInitiationFileInfo.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 
-class StreamInitiationFileInfoParser : public GenericPayloadParser<StreamInitiationFileInfo> {
+class SWIFTEN_API StreamInitiationFileInfoParser : public GenericPayloadParser<StreamInitiationFileInfo> {
 	public:
 		StreamInitiationFileInfoParser();
 
diff --git a/Swiften/Parser/PayloadParsers/StreamInitiationParser.h b/Swiften/Parser/PayloadParsers/StreamInitiationParser.h
index 51adf44..66ce778 100644
--- a/Swiften/Parser/PayloadParsers/StreamInitiationParser.h
+++ b/Swiften/Parser/PayloadParsers/StreamInitiationParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/optional.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StreamInitiation.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
@@ -15,7 +16,7 @@ namespace Swift {
 	class FormParserFactory;
 	class FormParser;
 
-	class StreamInitiationParser : public GenericPayloadParser<StreamInitiation> {
+	class SWIFTEN_API StreamInitiationParser : public GenericPayloadParser<StreamInitiation> {
 		public:
 			StreamInitiationParser();
 			~StreamInitiationParser();
diff --git a/Swiften/Parser/PayloadParsers/SubjectParser.h b/Swiften/Parser/PayloadParsers/SubjectParser.h
index 8edfe40..804c50b 100644
--- a/Swiften/Parser/PayloadParsers/SubjectParser.h
+++ b/Swiften/Parser/PayloadParsers/SubjectParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Subject.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
-	class SubjectParser : public GenericPayloadParser<Subject> {
+	class SWIFTEN_API SubjectParser : public GenericPayloadParser<Subject> {
 		public:
 			SubjectParser();
 
diff --git a/Swiften/Parser/PayloadParsers/VCardUpdateParser.h b/Swiften/Parser/PayloadParsers/VCardUpdateParser.h
index 931213b..cbd08e7 100644
--- a/Swiften/Parser/PayloadParsers/VCardUpdateParser.h
+++ b/Swiften/Parser/PayloadParsers/VCardUpdateParser.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/VCardUpdate.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 
 namespace Swift {
 	class SerializingParser;
 
-	class VCardUpdateParser : public GenericPayloadParser<VCardUpdate> {
+	class SWIFTEN_API VCardUpdateParser : public GenericPayloadParser<VCardUpdate> {
 		public:
 			VCardUpdateParser();
 
diff --git a/Swiften/Parser/PayloadParsers/WhiteboardParser.h b/Swiften/Parser/PayloadParsers/WhiteboardParser.h
index 0368c7c..89848b5 100644
--- a/Swiften/Parser/PayloadParsers/WhiteboardParser.h
+++ b/Swiften/Parser/PayloadParsers/WhiteboardParser.h
@@ -4,15 +4,22 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/WhiteboardPayload.h>
 #include <Swiften/Parser/GenericPayloadParser.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardElement.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardOperation.h>
 
 namespace Swift {
-	class WhiteboardParser : public Swift::GenericPayloadParser<WhiteboardPayload> {
+	class SWIFTEN_API WhiteboardParser : public Swift::GenericPayloadParser<WhiteboardPayload> {
 	public:
 		WhiteboardParser();
 
diff --git a/Swiften/Parser/StanzaAckRequestParser.h b/Swiften/Parser/StanzaAckRequestParser.h
index 8b55704..039cf26 100644
--- a/Swiften/Parser/StanzaAckRequestParser.h
+++ b/Swiften/Parser/StanzaAckRequestParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/StanzaAckRequest.h>
 
 namespace Swift {
-	class StanzaAckRequestParser : public GenericElementParser<StanzaAckRequest> {
+	class SWIFTEN_API StanzaAckRequestParser : public GenericElementParser<StanzaAckRequest> {
 		public:
 			StanzaAckRequestParser() : GenericElementParser<StanzaAckRequest>() {}
 	};
diff --git a/Swiften/Parser/StartTLSFailureParser.h b/Swiften/Parser/StartTLSFailureParser.h
index 46a4966..216449c 100644
--- a/Swiften/Parser/StartTLSFailureParser.h
+++ b/Swiften/Parser/StartTLSFailureParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/StartTLSFailure.h>
 
 namespace Swift {
-	class StartTLSFailureParser : public GenericElementParser<StartTLSFailure> {
+	class SWIFTEN_API StartTLSFailureParser : public GenericElementParser<StartTLSFailure> {
 		public:
 			StartTLSFailureParser() : GenericElementParser<StartTLSFailure>() {}
 	};
diff --git a/Swiften/Parser/StartTLSParser.h b/Swiften/Parser/StartTLSParser.h
index 7a84c1a..0282456 100644
--- a/Swiften/Parser/StartTLSParser.h
+++ b/Swiften/Parser/StartTLSParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/StartTLSRequest.h>
 
 namespace Swift {
-	class StartTLSParser : public GenericElementParser<StartTLSRequest> {
+	class SWIFTEN_API StartTLSParser : public GenericElementParser<StartTLSRequest> {
 		public:
 			StartTLSParser() : GenericElementParser<StartTLSRequest>() {}
 	};
diff --git a/Swiften/Parser/StreamErrorParser.h b/Swiften/Parser/StreamErrorParser.h
index f8d1159..74f9127 100644
--- a/Swiften/Parser/StreamErrorParser.h
+++ b/Swiften/Parser/StreamErrorParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StreamError.h>
 #include <Swiften/Parser/GenericElementParser.h>
 
 namespace Swift {
-	class StreamErrorParser : public GenericElementParser<StreamError> {
+	class SWIFTEN_API StreamErrorParser : public GenericElementParser<StreamError> {
 		public:
 			StreamErrorParser();
 
diff --git a/Swiften/Parser/StreamManagementFailedParser.h b/Swiften/Parser/StreamManagementFailedParser.h
index 5c30184..af490b7 100644
--- a/Swiften/Parser/StreamManagementFailedParser.h
+++ b/Swiften/Parser/StreamManagementFailedParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/StreamManagementFailed.h>
 
 namespace Swift {
-	class StreamManagementFailedParser : public GenericElementParser<StreamManagementFailed> {
+	class SWIFTEN_API StreamManagementFailedParser : public GenericElementParser<StreamManagementFailed> {
 		public:
 			StreamManagementFailedParser() : GenericElementParser<StreamManagementFailed>() {}
 	};
diff --git a/Swiften/Parser/StreamResumeParser.h b/Swiften/Parser/StreamResumeParser.h
index 4b9b7f9..a8659c1 100644
--- a/Swiften/Parser/StreamResumeParser.h
+++ b/Swiften/Parser/StreamResumeParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/StreamResume.h>
 
 namespace Swift {
-	class StreamResumeParser : public GenericElementParser<StreamResume> {
+	class SWIFTEN_API StreamResumeParser : public GenericElementParser<StreamResume> {
 		public:
 			StreamResumeParser();
 			~StreamResumeParser();
diff --git a/Swiften/Parser/StreamResumedParser.h b/Swiften/Parser/StreamResumedParser.h
index f4698fa..66722bf 100644
--- a/Swiften/Parser/StreamResumedParser.h
+++ b/Swiften/Parser/StreamResumedParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/StreamResumed.h>
 
 namespace Swift {
-	class StreamResumedParser : public GenericElementParser<StreamResumed> {
+	class SWIFTEN_API StreamResumedParser : public GenericElementParser<StreamResumed> {
 		public:
 			StreamResumedParser();
 			~StreamResumedParser();
diff --git a/Swiften/Parser/TLSProceedParser.h b/Swiften/Parser/TLSProceedParser.h
index 549d2f6..6c6464f 100644
--- a/Swiften/Parser/TLSProceedParser.h
+++ b/Swiften/Parser/TLSProceedParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/TLSProceed.h>
 
 namespace Swift {
-	class TLSProceedParser : public GenericElementParser<TLSProceed> {
+	class SWIFTEN_API TLSProceedParser : public GenericElementParser<TLSProceed> {
 		public:
 			TLSProceedParser() : GenericElementParser<TLSProceed>() {}
 	};
diff --git a/Swiften/Parser/Tree/NullParserElement.h b/Swiften/Parser/Tree/NullParserElement.h
index d844567..60d8353 100644
--- a/Swiften/Parser/Tree/NullParserElement.h
+++ b/Swiften/Parser/Tree/NullParserElement.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,10 +7,11 @@
 #pragma once
 
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/Tree/ParserElement.h>
 
 namespace Swift {
-	class NullParserElement : public ParserElement {
+	class SWIFTEN_API NullParserElement : public ParserElement {
 		public:
 			NullParserElement() : ParserElement("", "", AttributeMap()) {}
 
diff --git a/Swiften/Parser/Tree/TreeReparser.h b/Swiften/Parser/Tree/TreeReparser.h
index 8342000..80a326b 100644
--- a/Swiften/Parser/Tree/TreeReparser.h
+++ b/Swiften/Parser/Tree/TreeReparser.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericPayloadTreeParser.h>
 #include <Swiften/Parser/PayloadParsers/MUCItemParser.h>
 
 namespace Swift {
 	class PayloadParserFactoryCollection;
-	class TreeReparser {
+	class SWIFTEN_API TreeReparser {
 		public:
 			static boost::shared_ptr<Payload> parseTree(ParserElement::ref root, PayloadParserFactoryCollection* collection);
 
diff --git a/Swiften/Parser/UnknownElementParser.h b/Swiften/Parser/UnknownElementParser.h
index 89c3175..ac9cc79 100644
--- a/Swiften/Parser/UnknownElementParser.h
+++ b/Swiften/Parser/UnknownElementParser.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/GenericElementParser.h>
 #include <Swiften/Elements/UnknownElement.h>
 
 namespace Swift {
-	class UnknownElementParser : public GenericElementParser<UnknownElement> {
+	class SWIFTEN_API UnknownElementParser : public GenericElementParser<UnknownElement> {
 		public:
 			UnknownElementParser() : GenericElementParser<UnknownElement>() {}
 	};
diff --git a/Swiften/Parser/UnknownPayloadParser.h b/Swiften/Parser/UnknownPayloadParser.h
index 366b16a..96e7b77 100644
--- a/Swiften/Parser/UnknownPayloadParser.h
+++ b/Swiften/Parser/UnknownPayloadParser.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Parser/PayloadParser.h>
 
 namespace Swift {
-	class UnknownPayloadParser : public PayloadParser {
+	class SWIFTEN_API UnknownPayloadParser : public PayloadParser {
 		public:
 			UnknownPayloadParser() {}
 
diff --git a/Swiften/Presence/PresenceSender.h b/Swiften/Presence/PresenceSender.h
index 72cdd0e..97725cb 100644
--- a/Swiften/Presence/PresenceSender.h
+++ b/Swiften/Presence/PresenceSender.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Presence.h>
 
 namespace Swift {
-	class PresenceSender {
+	class SWIFTEN_API PresenceSender {
 		public:
 			virtual ~PresenceSender();
 
diff --git a/Swiften/Queries/GenericRequest.h b/Swiften/Queries/GenericRequest.h
index b1e7dd3..d6cca1c 100644
--- a/Swiften/Queries/GenericRequest.h
+++ b/Swiften/Queries/GenericRequest.h
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/Queries/Request.h>
 
@@ -20,7 +21,7 @@ namespace Swift {
 	 * To send the iq, then call send() - onResponse will be called when a reply is received.
 	 */
 	template<typename PAYLOAD_TYPE>
-	class GenericRequest : public Request {
+	class SWIFTEN_API GenericRequest : public Request {
 		public:
 			typedef boost::shared_ptr<GenericRequest<PAYLOAD_TYPE> > ref;
 
diff --git a/Swiften/Queries/PubSubRequest.h b/Swiften/Queries/PubSubRequest.h
index 24b2234..9cf4404 100644
--- a/Swiften/Queries/PubSubRequest.h
+++ b/Swiften/Queries/PubSubRequest.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013 Isode Limited.
+ * Copyright (c) 2013-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/Queries/Request.h>
 #include <Swiften/Elements/ContainerPayload.h>
@@ -47,7 +48,7 @@ namespace Swift {
 	}
 
 	template<typename T>
-	class PubSubRequest : public Request {
+	class SWIFTEN_API PubSubRequest : public Request {
 			typedef typename Detail::PubSubPayloadTraits<T>::ContainerType ContainerType;
 			typedef typename Detail::PubSubPayloadTraits<T>::ResponseType ResponseType;
 
diff --git a/Swiften/Queries/RawRequest.h b/Swiften/Queries/RawRequest.h
index b730f4e..0d0336e 100644
--- a/Swiften/Queries/RawRequest.h
+++ b/Swiften/Queries/RawRequest.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 #include <boost/smart_ptr/make_shared.hpp>
 #include <typeinfo>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/boost_bsignals.h>
 #include <Swiften/Queries/Request.h>
 #include <Swiften/Elements/RawXMLPayload.h>
@@ -18,7 +19,7 @@
 #include <Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h>
 
 namespace Swift {
-	class RawRequest : public Request {
+	class SWIFTEN_API RawRequest : public Request {
 		public:
 			typedef boost::shared_ptr<RawRequest> ref;
 
diff --git a/Swiften/Queries/Requests/GetInBandRegistrationFormRequest.h b/Swiften/Queries/Requests/GetInBandRegistrationFormRequest.h
index 109ce38..b952875 100644
--- a/Swiften/Queries/Requests/GetInBandRegistrationFormRequest.h
+++ b/Swiften/Queries/Requests/GetInBandRegistrationFormRequest.h
@@ -1,17 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/GenericRequest.h>
 #include <Swiften/Elements/InBandRegistrationPayload.h>
 
-
 namespace Swift {
-	class GetInBandRegistrationFormRequest : public GenericRequest<InBandRegistrationPayload> {
+	class SWIFTEN_API GetInBandRegistrationFormRequest : public GenericRequest<InBandRegistrationPayload> {
 		public:
 			typedef boost::shared_ptr<GetInBandRegistrationFormRequest> ref;
 
diff --git a/Swiften/Queries/Requests/GetPrivateStorageRequest.h b/Swiften/Queries/Requests/GetPrivateStorageRequest.h
index 89499ff..97711a6 100644
--- a/Swiften/Queries/Requests/GetPrivateStorageRequest.h
+++ b/Swiften/Queries/Requests/GetPrivateStorageRequest.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,13 +10,14 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #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 {
+	class SWIFTEN_API GetPrivateStorageRequest : public Request {
 		public:
 			typedef boost::shared_ptr<GetPrivateStorageRequest<PAYLOAD_TYPE> > ref;
 
diff --git a/Swiften/Queries/Requests/GetSecurityLabelsCatalogRequest.h b/Swiften/Queries/Requests/GetSecurityLabelsCatalogRequest.h
index ae534b4..7a76fcc 100644
--- a/Swiften/Queries/Requests/GetSecurityLabelsCatalogRequest.h
+++ b/Swiften/Queries/Requests/GetSecurityLabelsCatalogRequest.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,12 +8,13 @@
 
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/GenericRequest.h>
 #include <Swiften/Elements/SecurityLabelsCatalog.h>
 
 
 namespace Swift {
-	class GetSecurityLabelsCatalogRequest : public GenericRequest<SecurityLabelsCatalog> {
+	class SWIFTEN_API GetSecurityLabelsCatalogRequest : public GenericRequest<SecurityLabelsCatalog> {
 		public:
 			typedef boost::shared_ptr<GetSecurityLabelsCatalogRequest> ref;
 
diff --git a/Swiften/Queries/Requests/GetSoftwareVersionRequest.h b/Swiften/Queries/Requests/GetSoftwareVersionRequest.h
index 439660d..1084a0b 100644
--- a/Swiften/Queries/Requests/GetSoftwareVersionRequest.h
+++ b/Swiften/Queries/Requests/GetSoftwareVersionRequest.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/GenericRequest.h>
 #include <Swiften/Elements/SoftwareVersion.h>
 #include <boost/smart_ptr/make_shared.hpp>
 
 
 namespace Swift {
-	class GetSoftwareVersionRequest : public GenericRequest<SoftwareVersion> {
+	class SWIFTEN_API GetSoftwareVersionRequest : public GenericRequest<SoftwareVersion> {
 		public:
 			typedef boost::shared_ptr<GetSoftwareVersionRequest> ref;
 
diff --git a/Swiften/Queries/Requests/SetPrivateStorageRequest.h b/Swiften/Queries/Requests/SetPrivateStorageRequest.h
index 140f167..9ab65f7 100644
--- a/Swiften/Queries/Requests/SetPrivateStorageRequest.h
+++ b/Swiften/Queries/Requests/SetPrivateStorageRequest.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,13 +10,14 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #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 {
+	class SWIFTEN_API SetPrivateStorageRequest : public Request {
 		public:
 			typedef boost::shared_ptr<SetPrivateStorageRequest<PAYLOAD_TYPE> > ref;
 
diff --git a/Swiften/Queries/Requests/SubmitInBandRegistrationFormRequest.h b/Swiften/Queries/Requests/SubmitInBandRegistrationFormRequest.h
index 82e1612..e79562a 100644
--- a/Swiften/Queries/Requests/SubmitInBandRegistrationFormRequest.h
+++ b/Swiften/Queries/Requests/SubmitInBandRegistrationFormRequest.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,12 +9,13 @@
 #include <Swiften/Base/boost_bsignals.h>
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/Request.h>
 #include <Swiften/Elements/InBandRegistrationPayload.h>
 
 
 namespace Swift {
-	class SetInBandRegistrationRequest : public Request {
+	class SWIFTEN_API SetInBandRegistrationRequest : public Request {
 		public:
 			typedef boost::shared_ptr<SetInBandRegistrationRequest> ref;
 
diff --git a/Swiften/Queries/Responder.h b/Swiften/Queries/Responder.h
index 84d232a..8a201e6 100644
--- a/Swiften/Queries/Responder.h
+++ b/Swiften/Queries/Responder.h
@@ -6,6 +6,7 @@
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/IQHandler.h>
 #include <Swiften/Queries/IQRouter.h>
 #include <Swiften/Elements/ErrorPayload.h>
@@ -21,7 +22,7 @@ namespace Swift {
 	 *	payload type will be passed to handleGetRequest() and handleSetRequest()
 	 */
 	template<typename PAYLOAD_TYPE>
-	class Responder : public IQHandler {
+	class SWIFTEN_API Responder : public IQHandler {
 		public:
 			Responder(IQRouter* router) : router_(router), isFinalResonder_(true) {
 			}
diff --git a/Swiften/Queries/SetResponder.h b/Swiften/Queries/SetResponder.h
index 0117275..5e7d42d 100644
--- a/Swiften/Queries/SetResponder.h
+++ b/Swiften/Queries/SetResponder.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/Responder.h>
 
 namespace Swift {
 	template<typename T>
-	class SetResponder : public Responder<T> {
+	class SWIFTEN_API SetResponder : public Responder<T> {
 		public:
 			SetResponder(IQRouter* router) : Responder<T>(router) {}
 
diff --git a/Swiften/Roster/GetRosterRequest.h b/Swiften/Roster/GetRosterRequest.h
index ccb7f01..56ee2bb 100644
--- a/Swiften/Roster/GetRosterRequest.h
+++ b/Swiften/Roster/GetRosterRequest.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/GenericRequest.h>
 #include <Swiften/Elements/RosterPayload.h>
 
 
 namespace Swift {
-	class GetRosterRequest : public GenericRequest<RosterPayload> {
+	class SWIFTEN_API GetRosterRequest : public GenericRequest<RosterPayload> {
 		public:
 			typedef boost::shared_ptr<GetRosterRequest> ref;
 
diff --git a/Swiften/Roster/RosterPushResponder.h b/Swiften/Roster/RosterPushResponder.h
index be2ed51..a54438b 100644
--- a/Swiften/Roster/RosterPushResponder.h
+++ b/Swiften/Roster/RosterPushResponder.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,12 +7,12 @@
 #pragma once
 
 #include <Swiften/Base/boost_bsignals.h>
-
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/SetResponder.h>
 #include <Swiften/Elements/RosterPayload.h>
 
 namespace Swift {
-	class RosterPushResponder : public SetResponder<RosterPayload> {
+	class SWIFTEN_API RosterPushResponder : public SetResponder<RosterPayload> {
 		public:
 			RosterPushResponder(IQRouter* router) : SetResponder<RosterPayload>(router) {}
 
diff --git a/Swiften/Roster/SetRosterRequest.h b/Swiften/Roster/SetRosterRequest.h
index f2e5e76..95a9f65 100644
--- a/Swiften/Roster/SetRosterRequest.h
+++ b/Swiften/Roster/SetRosterRequest.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,12 +9,13 @@
 #include <Swiften/Base/boost_bsignals.h>
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/Request.h>
 #include <Swiften/Elements/RosterPayload.h>
 
 
 namespace Swift {
-	class SetRosterRequest : public Request {
+	class SWIFTEN_API SetRosterRequest : public Request {
 		public:
 			typedef boost::shared_ptr<SetRosterRequest> ref;
 
diff --git a/Swiften/Roster/XMPPRoster.h b/Swiften/Roster/XMPPRoster.h
index 2d3effa..d454516 100644
--- a/Swiften/Roster/XMPPRoster.h
+++ b/Swiften/Roster/XMPPRoster.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -12,6 +12,7 @@
 #include <Swiften/Base/boost_bsignals.h>
 
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Elements/RosterItemPayload.h>
 #include <Swiften/Roster/XMPPRosterItem.h>
@@ -23,7 +24,7 @@ namespace Swift {
 	 * Changes to the roster (either due to subscription requests or by going online/offline) are
 	 * emitted through signals.
 	 */
-	class XMPPRoster {
+	class SWIFTEN_API XMPPRoster {
 		public:
 			XMPPRoster();
 			virtual ~XMPPRoster();
diff --git a/Swiften/Roster/XMPPRosterItem.h b/Swiften/Roster/XMPPRosterItem.h
index 3a9c691..3ea11ce 100644
--- a/Swiften/Roster/XMPPRosterItem.h
+++ b/Swiften/Roster/XMPPRosterItem.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,13 +8,14 @@
 
 
 #include <vector>
-
 #include <string>
+
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Elements/RosterItemPayload.h>
 
 namespace Swift {
-	class XMPPRosterItem {
+	class SWIFTEN_API XMPPRosterItem {
 		public:
 			XMPPRosterItem(const JID& jid, const std::string& name, const std::vector<std::string>& groups, RosterItemPayload::Subscription subscription) : jid(jid), name(name), groups(groups), subscription(subscription) {
 			}
diff --git a/Swiften/SASL/EXTERNALClientAuthenticator.h b/Swiften/SASL/EXTERNALClientAuthenticator.h
index 67b0bf9..2b87ec3 100644
--- a/Swiften/SASL/EXTERNALClientAuthenticator.h
+++ b/Swiften/SASL/EXTERNALClientAuthenticator.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2012 Isode Limited.
+ * Copyright (c) 2012-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/SASL/ClientAuthenticator.h>
 #include <Swiften/Base/ByteArray.h>
 
 namespace Swift {
-	class EXTERNALClientAuthenticator : public ClientAuthenticator {
+	class SWIFTEN_API EXTERNALClientAuthenticator : public ClientAuthenticator {
 		public:
 			EXTERNALClientAuthenticator();
 
diff --git a/Swiften/Serializer/AuthFailureSerializer.h b/Swiften/Serializer/AuthFailureSerializer.h
index b4fa6a0..9c1d66e 100644
--- a/Swiften/Serializer/AuthFailureSerializer.h
+++ b/Swiften/Serializer/AuthFailureSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,12 +8,13 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/AuthFailure.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
 
 namespace Swift {
-	class AuthFailureSerializer : public GenericElementSerializer<AuthFailure> {
+	class SWIFTEN_API AuthFailureSerializer : public GenericElementSerializer<AuthFailure> {
 		public:
 			AuthFailureSerializer() : GenericElementSerializer<AuthFailure>() {
 			}
diff --git a/Swiften/Serializer/ComponentHandshakeSerializer.h b/Swiften/Serializer/ComponentHandshakeSerializer.h
index 08b0798..0d102e2 100644
--- a/Swiften/Serializer/ComponentHandshakeSerializer.h
+++ b/Swiften/Serializer/ComponentHandshakeSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/ComponentHandshake.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 
 namespace Swift {
-	class ComponentHandshakeSerializer : public GenericElementSerializer<ComponentHandshake> {
+	class SWIFTEN_API ComponentHandshakeSerializer : public GenericElementSerializer<ComponentHandshake> {
 		public:
 			ComponentHandshakeSerializer();
 
diff --git a/Swiften/Serializer/CompressFailureSerializer.h b/Swiften/Serializer/CompressFailureSerializer.h
index 06b1be3..e20d458 100644
--- a/Swiften/Serializer/CompressFailureSerializer.h
+++ b/Swiften/Serializer/CompressFailureSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,12 +8,13 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/CompressFailure.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
 
 namespace Swift {
-	class CompressFailureSerializer : public GenericElementSerializer<CompressFailure> {
+	class SWIFTEN_API CompressFailureSerializer : public GenericElementSerializer<CompressFailure> {
 		public:
 			CompressFailureSerializer() : GenericElementSerializer<CompressFailure>() {
 			}
diff --git a/Swiften/Serializer/CompressRequestSerializer.h b/Swiften/Serializer/CompressRequestSerializer.h
index 619c402..2ff349d 100644
--- a/Swiften/Serializer/CompressRequestSerializer.h
+++ b/Swiften/Serializer/CompressRequestSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,10 +8,11 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/ElementSerializer.h>
 
 namespace Swift {
-	class CompressRequestSerializer : public ElementSerializer {
+	class SWIFTEN_API CompressRequestSerializer : public ElementSerializer {
 		public:
 			CompressRequestSerializer();
 
diff --git a/Swiften/Serializer/EnableStreamManagementSerializer.h b/Swiften/Serializer/EnableStreamManagementSerializer.h
index 0494835..f837e9f 100644
--- a/Swiften/Serializer/EnableStreamManagementSerializer.h
+++ b/Swiften/Serializer/EnableStreamManagementSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,12 +8,13 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/EnableStreamManagement.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
 
 namespace Swift {
-	class EnableStreamManagementSerializer : public GenericElementSerializer<EnableStreamManagement> {
+	class SWIFTEN_API EnableStreamManagementSerializer : public GenericElementSerializer<EnableStreamManagement> {
 		public:
 			EnableStreamManagementSerializer() : GenericElementSerializer<EnableStreamManagement>() {
 			}
diff --git a/Swiften/Serializer/GenericElementSerializer.h b/Swiften/Serializer/GenericElementSerializer.h
index 868592b..40ecb0f 100644
--- a/Swiften/Serializer/GenericElementSerializer.h
+++ b/Swiften/Serializer/GenericElementSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/ElementSerializer.h>
 
 namespace Swift {
 	template<typename T>
-	class GenericElementSerializer : public ElementSerializer {
+	class SWIFTEN_API GenericElementSerializer : public ElementSerializer {
 		public:
 			virtual SafeByteArray serialize(boost::shared_ptr<ToplevelElement> element) const = 0;
 
diff --git a/Swiften/Serializer/GenericPayloadSerializer.h b/Swiften/Serializer/GenericPayloadSerializer.h
index cfe8c98..e964d80 100644
--- a/Swiften/Serializer/GenericPayloadSerializer.h
+++ b/Swiften/Serializer/GenericPayloadSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/PayloadSerializer.h>
 
 namespace Swift {
 	template<typename PAYLOAD_TYPE>
-	class GenericPayloadSerializer : public PayloadSerializer {
+	class SWIFTEN_API GenericPayloadSerializer : public PayloadSerializer {
 		public:
 			virtual std::string serialize(boost::shared_ptr<Payload> element)  const {
 				return serializePayload(boost::dynamic_pointer_cast<PAYLOAD_TYPE>(element));
diff --git a/Swiften/Serializer/GenericStanzaSerializer.h b/Swiften/Serializer/GenericStanzaSerializer.h
index 3b33d55..319ea67 100644
--- a/Swiften/Serializer/GenericStanzaSerializer.h
+++ b/Swiften/Serializer/GenericStanzaSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/StanzaSerializer.h>
 
 namespace Swift {
 	template<typename STANZA_TYPE>
-	class GenericStanzaSerializer : public StanzaSerializer {
+	class SWIFTEN_API GenericStanzaSerializer : public StanzaSerializer {
 		public:
 			GenericStanzaSerializer(const std::string& tag, PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explicitNS = boost::optional<std::string>()) : StanzaSerializer(tag, payloadSerializers, explicitNS) {}
 
diff --git a/Swiften/Serializer/IQSerializer.h b/Swiften/Serializer/IQSerializer.h
index 67a5ac6..055ff86 100644
--- a/Swiften/Serializer/IQSerializer.h
+++ b/Swiften/Serializer/IQSerializer.h
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericStanzaSerializer.h>
 #include <Swiften/Elements/IQ.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
@@ -13,7 +14,7 @@
 #include <boost/optional.hpp>
 
 namespace Swift {
-	class IQSerializer : public GenericStanzaSerializer<IQ> {
+	class SWIFTEN_API IQSerializer : public GenericStanzaSerializer<IQ> {
 		public:
 			IQSerializer(PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explicitNS = boost::optional<std::string>()) :
 					GenericStanzaSerializer<IQ>("iq", payloadSerializers, explicitNS) {
diff --git a/Swiften/Serializer/MessageSerializer.h b/Swiften/Serializer/MessageSerializer.h
index b993b0e..25adc52 100644
--- a/Swiften/Serializer/MessageSerializer.h
+++ b/Swiften/Serializer/MessageSerializer.h
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericStanzaSerializer.h>
 #include <Swiften/Elements/Message.h>
 
@@ -14,7 +15,7 @@
 namespace Swift {
 	class XMLElement;
 
-	class MessageSerializer : public GenericStanzaSerializer<Message> {
+	class SWIFTEN_API MessageSerializer : public GenericStanzaSerializer<Message> {
 		public:
 			MessageSerializer(PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explitNS = boost::optional<std::string>());
 
diff --git a/Swiften/Serializer/PayloadSerializers/BlockSerializer.h b/Swiften/Serializer/PayloadSerializers/BlockSerializer.h
index dfc5f3e..48c8004 100644
--- a/Swiften/Serializer/PayloadSerializers/BlockSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/BlockSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2013 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,13 +8,14 @@
 
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
 
 namespace Swift {
 	template<typename BLOCK_ELEMENT>
-	class BlockSerializer : public GenericPayloadSerializer<BLOCK_ELEMENT> {
+	class SWIFTEN_API BlockSerializer : public GenericPayloadSerializer<BLOCK_ELEMENT> {
 		public:
 			BlockSerializer(std::string tag) : GenericPayloadSerializer<BLOCK_ELEMENT>(), tag(tag) {
 			}
diff --git a/Swiften/Serializer/PayloadSerializers/BodySerializer.h b/Swiften/Serializer/PayloadSerializers/BodySerializer.h
index def92f3..9ecc434 100644
--- a/Swiften/Serializer/PayloadSerializers/BodySerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/BodySerializer.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Serializer/XML/XMLTextNode.h>
 #include <Swiften/Elements/Body.h>
 
 namespace Swift {
-	class BodySerializer : public GenericPayloadSerializer<Body> {
+	class SWIFTEN_API BodySerializer : public GenericPayloadSerializer<Body> {
 		public:
 			BodySerializer() : GenericPayloadSerializer<Body>() {}
 
diff --git a/Swiften/Serializer/PayloadSerializers/BytestreamsSerializer.h b/Swiften/Serializer/PayloadSerializers/BytestreamsSerializer.h
index 76e7127..561a38f 100644
--- a/Swiften/Serializer/PayloadSerializers/BytestreamsSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/BytestreamsSerializer.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/Bytestreams.h>
 
 namespace Swift {
 	class PayloadSerializerCollection;
 
-	class BytestreamsSerializer : public GenericPayloadSerializer<Bytestreams> {
+	class SWIFTEN_API BytestreamsSerializer : public GenericPayloadSerializer<Bytestreams> {
 		public:
 			BytestreamsSerializer();
 
diff --git a/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h b/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h
index b60079d..26b6d68 100644
--- a/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/ChatState.h>
 
 namespace Swift {
-	class ChatStateSerializer : public GenericPayloadSerializer<ChatState> {
+	class SWIFTEN_API ChatStateSerializer : public GenericPayloadSerializer<ChatState> {
 		public:
 			ChatStateSerializer();
 
diff --git a/Swiften/Serializer/PayloadSerializers/CommandSerializer.h b/Swiften/Serializer/PayloadSerializers/CommandSerializer.h
index 465c11c..34b8d17 100644
--- a/Swiften/Serializer/PayloadSerializers/CommandSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/CommandSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/Command.h>
 
 namespace Swift {
-	class CommandSerializer : public GenericPayloadSerializer<Command> {
+	class SWIFTEN_API CommandSerializer : public GenericPayloadSerializer<Command> {
 		public:
 			CommandSerializer();
 
diff --git a/Swiften/Serializer/PayloadSerializers/DelaySerializer.h b/Swiften/Serializer/PayloadSerializers/DelaySerializer.h
index df07716..bfe53c3 100644
--- a/Swiften/Serializer/PayloadSerializers/DelaySerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/DelaySerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/Delay.h>
 
 namespace Swift {
-	class DelaySerializer : public GenericPayloadSerializer<Delay> {
+	class SWIFTEN_API DelaySerializer : public GenericPayloadSerializer<Delay> {
 		public:
 			DelaySerializer();
 
diff --git a/Swiften/Serializer/PayloadSerializers/DiscoItemsSerializer.h b/Swiften/Serializer/PayloadSerializers/DiscoItemsSerializer.h
index 0cabe49..8af94d6 100644
--- a/Swiften/Serializer/PayloadSerializers/DiscoItemsSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/DiscoItemsSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/DiscoItems.h>
 
 namespace Swift {
-	class DiscoItemsSerializer : public GenericPayloadSerializer<DiscoItems> {
+	class SWIFTEN_API DiscoItemsSerializer : public GenericPayloadSerializer<DiscoItems> {
 		public:
 			DiscoItemsSerializer();
 
diff --git a/Swiften/Serializer/PayloadSerializers/IBBSerializer.h b/Swiften/Serializer/PayloadSerializers/IBBSerializer.h
index 34ec10c..06e658a 100644
--- a/Swiften/Serializer/PayloadSerializers/IBBSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/IBBSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/IBB.h>
 
 namespace Swift {
-	class IBBSerializer : public GenericPayloadSerializer<IBB> {
+	class SWIFTEN_API IBBSerializer : public GenericPayloadSerializer<IBB> {
 		public:
 			IBBSerializer();
 
diff --git a/Swiften/Serializer/PayloadSerializers/IdleSerializer.h b/Swiften/Serializer/PayloadSerializers/IdleSerializer.h
index 45f9da4..2c4150e 100644
--- a/Swiften/Serializer/PayloadSerializers/IdleSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/IdleSerializer.h
@@ -4,14 +4,21 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/Idle.h>
 #include <Swiften/Base/DateTime.h>
 
 namespace Swift {
-	class IdleSerializer : public GenericPayloadSerializer<Idle> {
+	class SWIFTEN_API IdleSerializer : public GenericPayloadSerializer<Idle> {
 		public:
 			IdleSerializer() : GenericPayloadSerializer<Idle>() {}
 
diff --git a/Swiften/Serializer/PayloadSerializers/JingleContentPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/JingleContentPayloadSerializer.h
index 2de0064..4c74122 100644
--- a/Swiften/Serializer/PayloadSerializers/JingleContentPayloadSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/JingleContentPayloadSerializer.h
@@ -4,16 +4,23 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/JingleContentPayload.h>
 
 namespace Swift {
 	class PayloadSerializerCollection;
 	
-	class JingleContentPayloadSerializer : public GenericPayloadSerializer<JingleContentPayload> {
+	class SWIFTEN_API JingleContentPayloadSerializer : public GenericPayloadSerializer<JingleContentPayload> {
 		public:
 			JingleContentPayloadSerializer();
 			
diff --git a/Swiften/Serializer/PayloadSerializers/JingleFileTransferHashSerializer.h b/Swiften/Serializer/PayloadSerializers/JingleFileTransferHashSerializer.h
index 7fa6ac5..2e75758 100644
--- a/Swiften/Serializer/PayloadSerializers/JingleFileTransferHashSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/JingleFileTransferHashSerializer.h
@@ -4,9 +4,16 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/JingleFileTransferHash.h>
 
@@ -14,7 +21,7 @@ namespace Swift {
 	class PayloadSerializerCollection;
 	class XMLElement;
 	
-	class JingleFileTransferHashSerializer : public GenericPayloadSerializer<JingleFileTransferHash> {
+	class SWIFTEN_API JingleFileTransferHashSerializer : public GenericPayloadSerializer<JingleFileTransferHash> {
 		public:
 			JingleFileTransferHashSerializer();
 			
diff --git a/Swiften/Serializer/PayloadSerializers/JingleIBBTransportPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/JingleIBBTransportPayloadSerializer.h
index ac9cba9..42765ab 100644
--- a/Swiften/Serializer/PayloadSerializers/JingleIBBTransportPayloadSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/JingleIBBTransportPayloadSerializer.h
@@ -4,19 +4,24 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/JingleIBBTransportPayload.h>
 
-
-
 namespace Swift {
 	class PayloadSerializerCollection;
 	class XMLElement;
 	
-	class JingleIBBTransportPayloadSerializer : public GenericPayloadSerializer<JingleIBBTransportPayload> {
+	class SWIFTEN_API JingleIBBTransportPayloadSerializer : public GenericPayloadSerializer<JingleIBBTransportPayload> {
 		public:
 			JingleIBBTransportPayloadSerializer();
 			
diff --git a/Swiften/Serializer/PayloadSerializers/JingleS5BTransportPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/JingleS5BTransportPayloadSerializer.h
index 210688d..d857129 100644
--- a/Swiften/Serializer/PayloadSerializers/JingleS5BTransportPayloadSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/JingleS5BTransportPayloadSerializer.h
@@ -4,9 +4,16 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/JingleS5BTransportPayload.h>
 
@@ -14,7 +21,7 @@ namespace Swift {
 	class PayloadSerializerCollection;
 	class XMLElement;
 	
-	class JingleS5BTransportPayloadSerializer : public GenericPayloadSerializer<JingleS5BTransportPayload> {
+	class SWIFTEN_API JingleS5BTransportPayloadSerializer : public GenericPayloadSerializer<JingleS5BTransportPayload> {
 		public:
 			JingleS5BTransportPayloadSerializer();
 			
diff --git a/Swiften/Serializer/PayloadSerializers/LastSerializer.h b/Swiften/Serializer/PayloadSerializers/LastSerializer.h
index dd9ff9b..ac0fb8f 100644
--- a/Swiften/Serializer/PayloadSerializers/LastSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/LastSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/lexical_cast.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/Last.h>
 
 namespace Swift {
-	class LastSerializer : public GenericPayloadSerializer<Last> {
+	class SWIFTEN_API LastSerializer : public GenericPayloadSerializer<Last> {
 		public:
 			LastSerializer() : GenericPayloadSerializer<Last>() {}
 
diff --git a/Swiften/Serializer/PayloadSerializers/MUCDestroyPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/MUCDestroyPayloadSerializer.h
index 689987c..dcbf68c 100644
--- a/Swiften/Serializer/PayloadSerializers/MUCDestroyPayloadSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/MUCDestroyPayloadSerializer.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/MUCDestroyPayload.h>
 
 namespace Swift {
 	class PayloadSerializerCollection;
-	class MUCDestroyPayloadSerializer : public GenericPayloadSerializer<MUCDestroyPayload> {
+	class SWIFTEN_API MUCDestroyPayloadSerializer : public GenericPayloadSerializer<MUCDestroyPayload> {
 		public:
 			MUCDestroyPayloadSerializer();
 			virtual std::string serializePayload(boost::shared_ptr<MUCDestroyPayload> version)  const;
diff --git a/Swiften/Serializer/PayloadSerializers/MUCInvitationPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/MUCInvitationPayloadSerializer.h
index 1f6e396..f395a4e 100644
--- a/Swiften/Serializer/PayloadSerializers/MUCInvitationPayloadSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/MUCInvitationPayloadSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2011 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
-
+ 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/MUCInvitationPayload.h>
 
 namespace Swift {
-	class MUCInvitationPayloadSerializer : public GenericPayloadSerializer<MUCInvitationPayload> {
+	class SWIFTEN_API MUCInvitationPayloadSerializer : public GenericPayloadSerializer<MUCInvitationPayload> {
 		public:
 			MUCInvitationPayloadSerializer();
 
diff --git a/Swiften/Serializer/PayloadSerializers/MUCOwnerPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/MUCOwnerPayloadSerializer.h
index 7c35df1..ff55b78 100644
--- a/Swiften/Serializer/PayloadSerializers/MUCOwnerPayloadSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/MUCOwnerPayloadSerializer.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/MUCOwnerPayload.h>
 
 namespace Swift {
 	class PayloadSerializerCollection;
-	class MUCOwnerPayloadSerializer : public GenericPayloadSerializer<MUCOwnerPayload> {
+	class SWIFTEN_API MUCOwnerPayloadSerializer : public GenericPayloadSerializer<MUCOwnerPayload> {
 		public:
 			MUCOwnerPayloadSerializer(PayloadSerializerCollection* serializers);
 			virtual std::string serializePayload(boost::shared_ptr<MUCOwnerPayload> version)  const;
diff --git a/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h
index 9a97f76..77eba1c 100644
--- a/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/MUCPayload.h>
 
 namespace Swift {
-	class MUCPayloadSerializer : public GenericPayloadSerializer<MUCPayload> {
+	class SWIFTEN_API MUCPayloadSerializer : public GenericPayloadSerializer<MUCPayload> {
 		public:
 			MUCPayloadSerializer();
 			virtual std::string serializePayload(boost::shared_ptr<MUCPayload> version)  const;
diff --git a/Swiften/Serializer/PayloadSerializers/MUCUserPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/MUCUserPayloadSerializer.h
index 98aff53..2d1b1e5 100644
--- a/Swiften/Serializer/PayloadSerializers/MUCUserPayloadSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/MUCUserPayloadSerializer.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/MUCUserPayload.h>
 
 namespace Swift {
 	class PayloadSerializerCollection;
-	class MUCUserPayloadSerializer : public GenericPayloadSerializer<MUCUserPayload> {
+	class SWIFTEN_API MUCUserPayloadSerializer : public GenericPayloadSerializer<MUCUserPayload> {
 		public:
 			MUCUserPayloadSerializer(PayloadSerializerCollection* serializers);
 
diff --git a/Swiften/Serializer/PayloadSerializers/NicknameSerializer.h b/Swiften/Serializer/PayloadSerializers/NicknameSerializer.h
index a260a7b..f1a6c9c 100644
--- a/Swiften/Serializer/PayloadSerializers/NicknameSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/NicknameSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/Nickname.h>
 
 namespace Swift {
-	class NicknameSerializer : public GenericPayloadSerializer<Nickname> {
+	class SWIFTEN_API NicknameSerializer : public GenericPayloadSerializer<Nickname> {
 		public:
 			NicknameSerializer();
 
diff --git a/Swiften/Serializer/PayloadSerializers/PrioritySerializer.h b/Swiften/Serializer/PayloadSerializers/PrioritySerializer.h
index d24a2cc..bda5b2d 100644
--- a/Swiften/Serializer/PayloadSerializers/PrioritySerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/PrioritySerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/lexical_cast.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/Priority.h>
 
 namespace Swift {
-	class PrioritySerializer : public GenericPayloadSerializer<Priority> {
+	class SWIFTEN_API PrioritySerializer : public GenericPayloadSerializer<Priority> {
 		public:
 			PrioritySerializer() : GenericPayloadSerializer<Priority>() {}
 
diff --git a/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h b/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h
index 4b8ecaa..b11b60b 100644
--- a/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/PrivateStorage.h>
 
 namespace Swift {
 	class PayloadSerializerCollection;
 
-	class PrivateStorageSerializer : public GenericPayloadSerializer<PrivateStorage> {
+	class SWIFTEN_API PrivateStorageSerializer : public GenericPayloadSerializer<PrivateStorage> {
 		public:
 			PrivateStorageSerializer(PayloadSerializerCollection* serializers);
 
diff --git a/Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h b/Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h
index da161cc..08314a5 100644
--- a/Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/RawXMLPayload.h>
 
 namespace Swift {
-	class RawXMLPayloadSerializer : public GenericPayloadSerializer<RawXMLPayload> {
+	class SWIFTEN_API RawXMLPayloadSerializer : public GenericPayloadSerializer<RawXMLPayload> {
 		public:
 			RawXMLPayloadSerializer() : GenericPayloadSerializer<RawXMLPayload>() {}
 
diff --git a/Swiften/Serializer/PayloadSerializers/ReplaceSerializer.h b/Swiften/Serializer/PayloadSerializers/ReplaceSerializer.h
index 4942ce3..9528964 100644
--- a/Swiften/Serializer/PayloadSerializers/ReplaceSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/ReplaceSerializer.h
@@ -5,19 +5,20 @@
  */
 
 /*
- * Copyright (c) 2012 Isode Limited.
+ * Copyright (c) 2012-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Serializer/XML/XMLTextNode.h>
 #include <Swiften/Elements/Replace.h>
 
 namespace Swift {
-	class ReplaceSerializer : public GenericPayloadSerializer<Replace> {
+	class SWIFTEN_API ReplaceSerializer : public GenericPayloadSerializer<Replace> {
 		public:
 			ReplaceSerializer() : GenericPayloadSerializer<Replace>() {}
 
diff --git a/Swiften/Serializer/PayloadSerializers/S5BProxyRequestSerializer.h b/Swiften/Serializer/PayloadSerializers/S5BProxyRequestSerializer.h
index e7cdbe8..062e7c6 100644
--- a/Swiften/Serializer/PayloadSerializers/S5BProxyRequestSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/S5BProxyRequestSerializer.h
@@ -15,6 +15,7 @@
 #include <boost/lexical_cast.hpp>
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/S5BProxyRequest.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
@@ -22,7 +23,7 @@
 namespace Swift {
 	class PayloadSerializerCollection;
 
-	class S5BProxyRequestSerializer : public GenericPayloadSerializer<S5BProxyRequest> {
+	class SWIFTEN_API S5BProxyRequestSerializer : public GenericPayloadSerializer<S5BProxyRequest> {
 		public:
 			virtual std::string serializePayload(boost::shared_ptr<S5BProxyRequest> s5bProxyRequest) const {
 				XMLElement queryElement("query", "http://jabber.org/protocol/bytestreams");
diff --git a/Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h b/Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h
index 064bc69..d629db2 100644
--- a/Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/lexical_cast.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/StartSession.h>
 
 namespace Swift {
-	class StartSessionSerializer : public GenericPayloadSerializer<StartSession> {
+	class SWIFTEN_API StartSessionSerializer : public GenericPayloadSerializer<StartSession> {
 		public:
 			StartSessionSerializer() : GenericPayloadSerializer<StartSession>() {}
 
diff --git a/Swiften/Serializer/PayloadSerializers/StatusSerializer.h b/Swiften/Serializer/PayloadSerializers/StatusSerializer.h
index 3268d09..92c51d2 100644
--- a/Swiften/Serializer/PayloadSerializers/StatusSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/StatusSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,13 +8,14 @@
 
 #include <boost/smart_ptr/make_shared.hpp>
 
+#include <Swiften/Base/API.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> {
+	class SWIFTEN_API StatusSerializer : public GenericPayloadSerializer<Status> {
 		public:
 			StatusSerializer() : GenericPayloadSerializer<Status>() {}
 
diff --git a/Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h b/Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h
index 696a3fe..33273ba 100644
--- a/Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/StatusShow.h>
 
 namespace Swift {
-	class StatusShowSerializer : public GenericPayloadSerializer<StatusShow> {
+	class SWIFTEN_API StatusShowSerializer : public GenericPayloadSerializer<StatusShow> {
 		public:
 			StatusShowSerializer() : GenericPayloadSerializer<StatusShow>() {}
 
diff --git a/Swiften/Serializer/PayloadSerializers/StorageSerializer.h b/Swiften/Serializer/PayloadSerializers/StorageSerializer.h
index a829453..68deff8 100644
--- a/Swiften/Serializer/PayloadSerializers/StorageSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/StorageSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Elements/Storage.h>
 
 namespace Swift {
-	class StorageSerializer : public GenericPayloadSerializer<Storage> {
+	class SWIFTEN_API StorageSerializer : public GenericPayloadSerializer<Storage> {
 		public:
 			StorageSerializer();
 
diff --git a/Swiften/Serializer/PayloadSerializers/SubjectSerializer.h b/Swiften/Serializer/PayloadSerializers/SubjectSerializer.h
index f6e7fb2..580164b 100644
--- a/Swiften/Serializer/PayloadSerializers/SubjectSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/SubjectSerializer.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericPayloadSerializer.h>
 #include <Swiften/Serializer/XML/XMLTextNode.h>
 #include <Swiften/Elements/Subject.h>
 
 namespace Swift {
-	class SubjectSerializer : public GenericPayloadSerializer<Subject> {
+	class SWIFTEN_API SubjectSerializer : public GenericPayloadSerializer<Subject> {
 		public:
 			SubjectSerializer() : GenericPayloadSerializer<Subject>() {}
 
diff --git a/Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.h b/Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.h
index 26b76cb..543d95e 100644
--- a/Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.h
+++ b/Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.h
@@ -4,8 +4,15 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/WhiteboardPayload.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardLineElement.h>
 #include <Swiften/Elements/Whiteboard/WhiteboardFreehandPathElement.h>
@@ -18,7 +25,7 @@
 #include <Swiften/Serializer/XML/XMLElement.h>
 
 namespace Swift {
-	class WhiteboardElementSerializingVisitor : public WhiteboardElementVisitor {
+	class SWIFTEN_API WhiteboardElementSerializingVisitor : public WhiteboardElementVisitor {
 	public:
 		void visit(WhiteboardLineElement& line);
 		void visit(WhiteboardFreehandPathElement& path);
@@ -34,7 +41,7 @@ namespace Swift {
 		XMLElement::ref element;
 	};
 
-	class WhiteboardSerializer : public GenericPayloadSerializer<WhiteboardPayload> {
+	class SWIFTEN_API WhiteboardSerializer : public GenericPayloadSerializer<WhiteboardPayload> {
 	public:
 		std::string serializePayload(boost::shared_ptr<WhiteboardPayload> payload) const;
 
diff --git a/Swiften/Serializer/PresenceSerializer.h b/Swiften/Serializer/PresenceSerializer.h
index 0386bb7..d459fde 100644
--- a/Swiften/Serializer/PresenceSerializer.h
+++ b/Swiften/Serializer/PresenceSerializer.h
@@ -1,18 +1,19 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericStanzaSerializer.h>
 #include <Swiften/Elements/Presence.h>
 
 #include <boost/optional.hpp>
 
 namespace Swift {
-	class PresenceSerializer : public GenericStanzaSerializer<Presence> {
+	class SWIFTEN_API PresenceSerializer : public GenericStanzaSerializer<Presence> {
 		public:
 			PresenceSerializer(PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explicitNS = boost::optional<std::string>());
 			~PresenceSerializer() {}
diff --git a/Swiften/Serializer/StanzaAckRequestSerializer.h b/Swiften/Serializer/StanzaAckRequestSerializer.h
index 60fb8ed..e8517b6 100644
--- a/Swiften/Serializer/StanzaAckRequestSerializer.h
+++ b/Swiften/Serializer/StanzaAckRequestSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,12 +8,13 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StanzaAckRequest.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
 
 namespace Swift {
-	class StanzaAckRequestSerializer : public GenericElementSerializer<StanzaAckRequest> {
+	class SWIFTEN_API StanzaAckRequestSerializer : public GenericElementSerializer<StanzaAckRequest> {
 		public:
 			StanzaAckRequestSerializer() : GenericElementSerializer<StanzaAckRequest>() {
 			}
diff --git a/Swiften/Serializer/StanzaAckSerializer.h b/Swiften/Serializer/StanzaAckSerializer.h
index a1395ac..38e097b 100644
--- a/Swiften/Serializer/StanzaAckSerializer.h
+++ b/Swiften/Serializer/StanzaAckSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,12 +9,13 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/lexical_cast.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StanzaAck.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
 
 namespace Swift {
-	class StanzaAckSerializer : public GenericElementSerializer<StanzaAck> {
+	class SWIFTEN_API StanzaAckSerializer : public GenericElementSerializer<StanzaAck> {
 		public:
 			StanzaAckSerializer() : GenericElementSerializer<StanzaAck>() {
 			}
diff --git a/Swiften/Serializer/StanzaSerializer.h b/Swiften/Serializer/StanzaSerializer.h
index e076c1e..61f9173 100644
--- a/Swiften/Serializer/StanzaSerializer.h
+++ b/Swiften/Serializer/StanzaSerializer.h
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2013-2014 Isode Limited.
+ * Copyright (c) 2013-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/Stanza.h>
 #include <Swiften/Serializer/ElementSerializer.h>
 
@@ -16,7 +17,7 @@ namespace Swift {
 	class PayloadSerializerCollection;
 	class XMLElement;
 
-	class StanzaSerializer : public ElementSerializer {
+	class SWIFTEN_API StanzaSerializer : public ElementSerializer {
 		public:
 			StanzaSerializer(const std::string& tag, PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explicitNS = boost::optional<std::string>());
 
diff --git a/Swiften/Serializer/StartTLSFailureSerializer.h b/Swiften/Serializer/StartTLSFailureSerializer.h
index 33af02d..b645953 100644
--- a/Swiften/Serializer/StartTLSFailureSerializer.h
+++ b/Swiften/Serializer/StartTLSFailureSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,12 +8,13 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StartTLSFailure.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
 
 namespace Swift {
-	class StartTLSFailureSerializer : public GenericElementSerializer<StartTLSFailure> {
+	class SWIFTEN_API StartTLSFailureSerializer : public GenericElementSerializer<StartTLSFailure> {
 		public:
 			StartTLSFailureSerializer() : GenericElementSerializer<StartTLSFailure>() {
 			}
diff --git a/Swiften/Serializer/StartTLSRequestSerializer.h b/Swiften/Serializer/StartTLSRequestSerializer.h
index 3dbadc4..47dc1e7 100644
--- a/Swiften/Serializer/StartTLSRequestSerializer.h
+++ b/Swiften/Serializer/StartTLSRequestSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,12 +8,13 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StartTLSRequest.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
 
 namespace Swift {
-	class StartTLSRequestSerializer : public GenericElementSerializer<StartTLSRequest> {
+	class SWIFTEN_API StartTLSRequestSerializer : public GenericElementSerializer<StartTLSRequest> {
 		public:
 			StartTLSRequestSerializer() : GenericElementSerializer<StartTLSRequest>() {
 			}
diff --git a/Swiften/Serializer/StreamErrorSerializer.h b/Swiften/Serializer/StreamErrorSerializer.h
index 34463c1..f7a8825 100644
--- a/Swiften/Serializer/StreamErrorSerializer.h
+++ b/Swiften/Serializer/StreamErrorSerializer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 #include <Swiften/Elements/StreamError.h>
 
 namespace Swift {
-	class StreamErrorSerializer : public GenericElementSerializer<StreamError> {
+	class SWIFTEN_API StreamErrorSerializer : public GenericElementSerializer<StreamError> {
 		public:
 			StreamErrorSerializer();
 
diff --git a/Swiften/Serializer/StreamManagementEnabledSerializer.h b/Swiften/Serializer/StreamManagementEnabledSerializer.h
index c3852c6..fc44739 100644
--- a/Swiften/Serializer/StreamManagementEnabledSerializer.h
+++ b/Swiften/Serializer/StreamManagementEnabledSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StreamManagementEnabled.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 
 namespace Swift {
-	class StreamManagementEnabledSerializer : public GenericElementSerializer<StreamManagementEnabled> {
+	class SWIFTEN_API StreamManagementEnabledSerializer : public GenericElementSerializer<StreamManagementEnabled> {
 		public:
 			StreamManagementEnabledSerializer();
 
diff --git a/Swiften/Serializer/StreamManagementFailedSerializer.h b/Swiften/Serializer/StreamManagementFailedSerializer.h
index 877cf81..4489f97 100644
--- a/Swiften/Serializer/StreamManagementFailedSerializer.h
+++ b/Swiften/Serializer/StreamManagementFailedSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,12 +8,13 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StreamManagementFailed.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
 
 namespace Swift {
-	class StreamManagementFailedSerializer : public GenericElementSerializer<StreamManagementFailed> {
+	class SWIFTEN_API StreamManagementFailedSerializer : public GenericElementSerializer<StreamManagementFailed> {
 		public:
 			StreamManagementFailedSerializer() : GenericElementSerializer<StreamManagementFailed>() {
 			}
diff --git a/Swiften/Serializer/StreamResumeSerializer.h b/Swiften/Serializer/StreamResumeSerializer.h
index 8d78563..f166ac3 100644
--- a/Swiften/Serializer/StreamResumeSerializer.h
+++ b/Swiften/Serializer/StreamResumeSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2014 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StreamResume.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 
 namespace Swift {
-	class StreamResumeSerializer : public GenericElementSerializer<StreamResume> {
+	class SWIFTEN_API StreamResumeSerializer : public GenericElementSerializer<StreamResume> {
 		public:
 			StreamResumeSerializer();
 
diff --git a/Swiften/Serializer/StreamResumedSerializer.h b/Swiften/Serializer/StreamResumedSerializer.h
index dfee94a..a0c316e 100644
--- a/Swiften/Serializer/StreamResumedSerializer.h
+++ b/Swiften/Serializer/StreamResumedSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2014 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/StreamResumed.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 
 namespace Swift {
-	class StreamResumedSerializer : public GenericElementSerializer<StreamResumed> {
+	class SWIFTEN_API StreamResumedSerializer : public GenericElementSerializer<StreamResumed> {
 		public:
 			StreamResumedSerializer();
 
diff --git a/Swiften/Serializer/TLSProceedSerializer.h b/Swiften/Serializer/TLSProceedSerializer.h
index f307d5d..7203042 100644
--- a/Swiften/Serializer/TLSProceedSerializer.h
+++ b/Swiften/Serializer/TLSProceedSerializer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,12 +8,13 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Elements/TLSProceed.h>
 #include <Swiften/Serializer/GenericElementSerializer.h>
 #include <Swiften/Serializer/XML/XMLElement.h>
 
 namespace Swift {
-	class TLSProceedSerializer : public GenericElementSerializer<TLSProceed> {
+	class SWIFTEN_API TLSProceedSerializer : public GenericElementSerializer<TLSProceed> {
 		public:
 			TLSProceedSerializer() : GenericElementSerializer<TLSProceed>() {
 			}
diff --git a/Swiften/Serializer/XML/XMLRawTextNode.h b/Swiften/Serializer/XML/XMLRawTextNode.h
index b486ca4..f1e75e6 100644
--- a/Swiften/Serializer/XML/XMLRawTextNode.h
+++ b/Swiften/Serializer/XML/XMLRawTextNode.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/XML/XMLNode.h>
 
 namespace Swift {
-	class XMLRawTextNode : public XMLNode {
+	class SWIFTEN_API XMLRawTextNode : public XMLNode {
 		public:
 			XMLRawTextNode(const std::string& text) : text_(text) {
 			}
diff --git a/Swiften/Serializer/XML/XMLTextNode.h b/Swiften/Serializer/XML/XMLTextNode.h
index 62631f0..65d6459 100644
--- a/Swiften/Serializer/XML/XMLTextNode.h
+++ b/Swiften/Serializer/XML/XMLTextNode.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Serializer/XML/XMLNode.h>
 #include <Swiften/Base/String.h>
 
 namespace Swift {
-	class XMLTextNode : public XMLNode {
+	class SWIFTEN_API XMLTextNode : public XMLNode {
 		public:
 			typedef boost::shared_ptr<XMLTextNode> ref;
 
diff --git a/Swiften/Session/BOSHSessionStream.h b/Swiften/Session/BOSHSessionStream.h
index c796905..e97436c 100644
--- a/Swiften/Session/BOSHSessionStream.h
+++ b/Swiften/Session/BOSHSessionStream.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2014 Isode Limited.
+ * Copyright (c) 2011-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/SafeString.h>
 #include <Swiften/Base/SafeByteArray.h>
 #include <Swiften/Network/BOSHConnectionPool.h>
@@ -27,7 +28,7 @@ namespace Swift {
 	class TLSContextFactory;
 	class EventLoop;
 
-	class BOSHSessionStream : public SessionStream, public EventOwner, public boost::enable_shared_from_this<BOSHSessionStream> {
+	class SWIFTEN_API BOSHSessionStream : public SessionStream, public EventOwner, public boost::enable_shared_from_this<BOSHSessionStream> {
 		public:
 			BOSHSessionStream(
 					const URL& boshURL,
diff --git a/Swiften/Session/BasicSessionStream.h b/Swiften/Session/BasicSessionStream.h
index a3b703c..7832e42 100644
--- a/Swiften/Session/BasicSessionStream.h
+++ b/Swiften/Session/BasicSessionStream.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/SafeByteArray.h>
 #include <Swiften/Network/Connection.h>
 #include <Swiften/Session/SessionStream.h>
@@ -27,7 +28,7 @@ namespace Swift {
 	class CompressionLayer;
 	class XMLParserFactory;
 
-	class BasicSessionStream : public SessionStream {
+	class SWIFTEN_API BasicSessionStream : public SessionStream {
 		public:
 			BasicSessionStream(
 				StreamType streamType,
diff --git a/Swiften/Session/SessionStream.h b/Swiften/Session/SessionStream.h
index 7f611ea..8513c1a 100644
--- a/Swiften/Session/SessionStream.h
+++ b/Swiften/Session/SessionStream.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -22,7 +22,7 @@
 namespace Swift {
 	class SWIFTEN_API SessionStream {
 		public:
-			class SessionStreamError : public Swift::Error {
+			class SWIFTEN_API SessionStreamError : public Swift::Error {
 				public:
 					enum Type {
 						ParseError,
diff --git a/Swiften/Session/SessionTracer.h b/Swiften/Session/SessionTracer.h
index af34319..4900fd6 100644
--- a/Swiften/Session/SessionTracer.h
+++ b/Swiften/Session/SessionTracer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <string>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Session/Session.h>
 #include <Swiften/Base/SafeByteArray.h>
 
 namespace Swift {
-	class SessionTracer {
+	class SWIFTEN_API SessionTracer {
 		public:
 			SessionTracer(boost::shared_ptr<Session> session);
 
diff --git a/Swiften/StreamStack/CompressionLayer.h b/Swiften/StreamStack/CompressionLayer.h
index 4f0812b..db43b60 100644
--- a/Swiften/StreamStack/CompressionLayer.h
+++ b/Swiften/StreamStack/CompressionLayer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 #include <boost/noncopyable.hpp>
 #include <Swiften/Base/boost_bsignals.h>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/SafeByteArray.h>
 #include <Swiften/StreamStack/StreamLayer.h>
 #include <Swiften/Compress/ZLibException.h>
@@ -19,7 +20,7 @@ namespace Swift {
 	class ZLibCompressor;
 	class ZLibDecompressor;
 
-	class CompressionLayer : public StreamLayer, boost::noncopyable {
+	class SWIFTEN_API CompressionLayer : public StreamLayer, boost::noncopyable {
 		public:
 			CompressionLayer() {}
 
diff --git a/Swiften/StreamStack/ConnectionLayer.h b/Swiften/StreamStack/ConnectionLayer.h
index b850016..2ff1c3c 100644
--- a/Swiften/StreamStack/ConnectionLayer.h
+++ b/Swiften/StreamStack/ConnectionLayer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,11 +8,12 @@
 
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/StreamStack/LowLayer.h>
 #include <Swiften/Network/Connection.h>
 
 namespace Swift {
-	class ConnectionLayer : public LowLayer {
+	class SWIFTEN_API ConnectionLayer : public LowLayer {
 		public:
 			ConnectionLayer(boost::shared_ptr<Connection> connection);
 			~ConnectionLayer();
diff --git a/Swiften/StreamStack/StreamLayer.h b/Swiften/StreamStack/StreamLayer.h
index d3f7388..b860c93 100644
--- a/Swiften/StreamStack/StreamLayer.h
+++ b/Swiften/StreamStack/StreamLayer.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/StreamStack/LowLayer.h>
 #include <Swiften/StreamStack/HighLayer.h>
 
 namespace Swift {
-	class StreamLayer : public LowLayer, public HighLayer {
+	class SWIFTEN_API StreamLayer : public LowLayer, public HighLayer {
 		public:
 			StreamLayer() {}
 	};
diff --git a/Swiften/StreamStack/TLSLayer.h b/Swiften/StreamStack/TLSLayer.h
index 748b6ac..089512d 100644
--- a/Swiften/StreamStack/TLSLayer.h
+++ b/Swiften/StreamStack/TLSLayer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -8,6 +8,7 @@
 
 #include <Swiften/Base/boost_bsignals.h>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/SafeByteArray.h>
 #include <Swiften/StreamStack/StreamLayer.h>
 #include <Swiften/TLS/Certificate.h>
@@ -19,7 +20,7 @@ namespace Swift {
 	class TLSContext;
 	class TLSContextFactory;
 
-	class TLSLayer : public StreamLayer {
+	class SWIFTEN_API TLSLayer : public StreamLayer {
 		public:
 			TLSLayer(TLSContextFactory*);
 			~TLSLayer();
diff --git a/Swiften/StreamStack/WhitespacePingLayer.h b/Swiften/StreamStack/WhitespacePingLayer.h
index 18d13d1..17b0654 100644
--- a/Swiften/StreamStack/WhitespacePingLayer.h
+++ b/Swiften/StreamStack/WhitespacePingLayer.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,13 +9,14 @@
 #include <boost/noncopyable.hpp>
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/StreamStack/StreamLayer.h>
 
 namespace Swift {
 	class Timer;
 	class TimerFactory;
 
-	class WhitespacePingLayer : public StreamLayer, boost::noncopyable {
+	class SWIFTEN_API WhitespacePingLayer : public StreamLayer, boost::noncopyable {
 		public:
 			WhitespacePingLayer(TimerFactory* timerFactory);
 
diff --git a/Swiften/StringCodecs/PBKDF2.h b/Swiften/StringCodecs/PBKDF2.h
index c02c0da..dddad6f 100644
--- a/Swiften/StringCodecs/PBKDF2.h
+++ b/Swiften/StringCodecs/PBKDF2.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010-2013 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/SafeByteArray.h>
 #include <Swiften/Base/Concat.h>
 #include <Swiften/Crypto/CryptoProvider.h>
 
 namespace Swift {
-	class PBKDF2 {
+	class SWIFTEN_API PBKDF2 {
 		public:
 			static ByteArray encode(const SafeByteArray& password, const ByteArray& salt, int iterations, CryptoProvider* crypto) {
 				ByteArray u = crypto->getHMACSHA1(password, concat(salt, createByteArray("\0\0\0\1", 4)));
diff --git a/Swiften/TLS/BlindCertificateTrustChecker.h b/Swiften/TLS/BlindCertificateTrustChecker.h
index 2c1f6a6..b21f7a6 100644
--- a/Swiften/TLS/BlindCertificateTrustChecker.h
+++ b/Swiften/TLS/BlindCertificateTrustChecker.h
@@ -1,11 +1,12 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/TLS/CertificateTrustChecker.h>
 
 namespace Swift {
@@ -17,7 +18,7 @@ namespace Swift {
 	 *
 	 * \see Client::setAlwaysTrustCertificates()
 	 */
-	class BlindCertificateTrustChecker : public CertificateTrustChecker {
+	class SWIFTEN_API BlindCertificateTrustChecker : public CertificateTrustChecker {
 		public:
 			virtual bool isCertificateTrusted(const std::vector<Certificate::ref>&) {
 				return true;
diff --git a/Swiften/TLS/CertificateFactory.h b/Swiften/TLS/CertificateFactory.h
index efd3733..28d39bb 100644
--- a/Swiften/TLS/CertificateFactory.h
+++ b/Swiften/TLS/CertificateFactory.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/TLS/Certificate.h>
 
 namespace Swift {
-	class CertificateFactory {
+	class SWIFTEN_API CertificateFactory {
 		public:
 			virtual ~CertificateFactory();
 
diff --git a/Swiften/TLS/CertificateVerificationError.h b/Swiften/TLS/CertificateVerificationError.h
index c940818..f1596dc 100644
--- a/Swiften/TLS/CertificateVerificationError.h
+++ b/Swiften/TLS/CertificateVerificationError.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2012 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,10 +7,11 @@
 #pragma once
 
 #include <boost/shared_ptr.hpp>
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/Error.h>
 
 namespace Swift {
-	class CertificateVerificationError : public Error {
+	class SWIFTEN_API CertificateVerificationError : public Error {
 		public:
 			typedef boost::shared_ptr<CertificateVerificationError> ref;
 
diff --git a/Swiften/TLS/CertificateWithKey.h b/Swiften/TLS/CertificateWithKey.h
index 2cec1fc..687118a 100644
--- a/Swiften/TLS/CertificateWithKey.h
+++ b/Swiften/TLS/CertificateWithKey.h
@@ -1,15 +1,16 @@
 /*
- * Copyright (c) 2010-2012 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/SafeByteArray.h>
 
 namespace Swift {
-	class CertificateWithKey {
+	class SWIFTEN_API CertificateWithKey {
 		public:
 			typedef boost::shared_ptr<CertificateWithKey> ref;
 			CertificateWithKey() {}
diff --git a/Swiften/TLS/PKCS12Certificate.h b/Swiften/TLS/PKCS12Certificate.h
index d699ccd..0fd3f56 100644
--- a/Swiften/TLS/PKCS12Certificate.h
+++ b/Swiften/TLS/PKCS12Certificate.h
@@ -1,17 +1,18 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/SafeByteArray.h>
 #include <Swiften/TLS/CertificateWithKey.h>
 #include <boost/filesystem/path.hpp>
 
 namespace Swift {
-	class PKCS12Certificate : public Swift::CertificateWithKey {
+	class SWIFTEN_API PKCS12Certificate : public Swift::CertificateWithKey {
 		public:
 			PKCS12Certificate() {}
 
diff --git a/Swiften/TLS/SimpleCertificate.h b/Swiften/TLS/SimpleCertificate.h
index da94bf7..88688c0 100644
--- a/Swiften/TLS/SimpleCertificate.h
+++ b/Swiften/TLS/SimpleCertificate.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -7,10 +7,11 @@
 #pragma once
 
 #include <string>
+#include <Swiften/Base/API.h>
 #include <Swiften/TLS/Certificate.h>
 
 namespace Swift {
-	class SimpleCertificate : public Certificate {
+	class SWIFTEN_API SimpleCertificate : public Certificate {
 		public:
 			typedef boost::shared_ptr<SimpleCertificate> ref;
 
diff --git a/Swiften/TLS/TLSContext.h b/Swiften/TLS/TLSContext.h
index f5d0515..c5703e7 100644
--- a/Swiften/TLS/TLSContext.h
+++ b/Swiften/TLS/TLSContext.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -9,6 +9,7 @@
 #include <Swiften/Base/boost_bsignals.h>
 #include <boost/shared_ptr.hpp>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Base/SafeByteArray.h>
 #include <Swiften/TLS/Certificate.h>
 #include <Swiften/TLS/CertificateWithKey.h>
@@ -17,7 +18,7 @@
 
 namespace Swift {
 
-	class TLSContext {
+	class SWIFTEN_API TLSContext {
 		public:
 			virtual ~TLSContext();
 
diff --git a/Swiften/TLS/TLSContextFactory.h b/Swiften/TLS/TLSContextFactory.h
index 79e2b05..10c5577 100644
--- a/Swiften/TLS/TLSContextFactory.h
+++ b/Swiften/TLS/TLSContextFactory.h
@@ -1,15 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
+
 namespace Swift {
 	class TLSContext;
 
-	class TLSContextFactory {
+	class SWIFTEN_API TLSContextFactory {
 		public:
 			virtual ~TLSContextFactory();
 
diff --git a/Swiften/TLS/TLSError.h b/Swiften/TLS/TLSError.h
index 2589a2a..27e4b03 100644
--- a/Swiften/TLS/TLSError.h
+++ b/Swiften/TLS/TLSError.h
@@ -1,16 +1,17 @@
 /*
- * Copyright (c) 2012 Isode Limited.
+ * Copyright (c) 2012-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <boost/shared_ptr.hpp>
 #include <Swiften/Base/Error.h>
 
 namespace Swift {
-	class TLSError : public Error {
+	class SWIFTEN_API TLSError : public Error {
 		public:
 			typedef boost::shared_ptr<TLSError> ref;
 
diff --git a/Swiften/VCards/GetVCardRequest.h b/Swiften/VCards/GetVCardRequest.h
index e9a28e8..47c302d 100644
--- a/Swiften/VCards/GetVCardRequest.h
+++ b/Swiften/VCards/GetVCardRequest.h
@@ -1,17 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/GenericRequest.h>
 #include <Swiften/Elements/VCard.h>
 
-
 namespace Swift {
-	class GetVCardRequest : public GenericRequest<VCard> {
+	class SWIFTEN_API GetVCardRequest : public GenericRequest<VCard> {
 		public:
 			typedef boost::shared_ptr<GetVCardRequest> ref;
 
diff --git a/Swiften/VCards/SetVCardRequest.h b/Swiften/VCards/SetVCardRequest.h
index 2728cde..d59c3bc 100644
--- a/Swiften/VCards/SetVCardRequest.h
+++ b/Swiften/VCards/SetVCardRequest.h
@@ -1,17 +1,17 @@
 /*
- * Copyright (c) 2010 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
 
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/GenericRequest.h>
 #include <Swiften/Elements/VCard.h>
 
-
 namespace Swift {
-	class SetVCardRequest : public GenericRequest<VCard> {
+	class SWIFTEN_API SetVCardRequest : public GenericRequest<VCard> {
 		public:
 			typedef boost::shared_ptr<SetVCardRequest> ref;
 
diff --git a/Swiften/VCards/VCardMemoryStorage.h b/Swiften/VCards/VCardMemoryStorage.h
index 3758b89..989d46e 100644
--- a/Swiften/VCards/VCardMemoryStorage.h
+++ b/Swiften/VCards/VCardMemoryStorage.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Isode Limited.
+ * Copyright (c) 2010-2015 Isode Limited.
  * All rights reserved.
  * See the COPYING file for more information.
  */
@@ -10,11 +10,12 @@
 
 #include <map>
 
+#include <Swiften/Base/API.h>
 #include <Swiften/JID/JID.h>
 #include <Swiften/VCards/VCardStorage.h>
 
 namespace Swift {
-	class VCardMemoryStorage : public VCardStorage {
+	class SWIFTEN_API VCardMemoryStorage : public VCardStorage {
 		public:
 			VCardMemoryStorage(CryptoProvider* crypto) : VCardStorage(crypto) {}
 
diff --git a/Swiften/Whiteboard/WhiteboardResponder.h b/Swiften/Whiteboard/WhiteboardResponder.h
index c05be23..23c6341 100644
--- a/Swiften/Whiteboard/WhiteboardResponder.h
+++ b/Swiften/Whiteboard/WhiteboardResponder.h
@@ -4,8 +4,15 @@
  * See Documentation/Licenses/BSD-simplified.txt for more information.
  */
 
+/*
+ * Copyright (c) 2015 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file for more information.
+ */
+
 #pragma once
 
+#include <Swiften/Base/API.h>
 #include <Swiften/Queries/SetResponder.h>
 #include <Swiften/Elements/WhiteboardPayload.h>
 
@@ -13,7 +20,7 @@ namespace Swift {
 	class IQRouter;
 	class WhiteboardSessionManager;
 
-	class WhiteboardResponder : public SetResponder<WhiteboardPayload> {
+	class SWIFTEN_API WhiteboardResponder : public SetResponder<WhiteboardPayload> {
 	public:
 		WhiteboardResponder(WhiteboardSessionManager* sessionManager, IQRouter* router);
 		bool handleSetRequest(const JID& from, const JID& /*to*/, const std::string& id, boost::shared_ptr<WhiteboardPayload> payload);
-- 
cgit v0.10.2-6-g49f6