diff --git a/program/Source/app/Application.cpp b/program/Source/app/Application.cpp
index 3f2e40445dfcd48616c5572c20ac4f41c8afee96..711abfb890a763bf486a3e1a9a42a86c5467d325 100644
--- a/program/Source/app/Application.cpp
+++ b/program/Source/app/Application.cpp
@@ -40,6 +40,18 @@ int main(int argc, char **argv) {
 	//application.ui = app::UI();
 	application.ui.app = &application;
 
+	string dataFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\";
+	string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
+	string cloudFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\cloud\\";
+
+	application.cfs.getEncoder()->setFolders(dataFolder,fragFolder);
+	application.cfs.getDecoder()->setFolders(dataFolder,fragFolder);
+	application.cfs.setFolders(fragFolder);
+
+	for (auto ca : application.cm.getCloudList()){
+		ca->setFolders(cloudFolder, fragFolder);
+	}
+
 	Application::DeleteThisUglyWorkaround_App_Instance = &application;
 
 	if (argc > 1 && (Application::SERVER.compare(argv[1]) == 0))
diff --git a/program/Source/cloud/CloudAdapter.h b/program/Source/cloud/CloudAdapter.h
index 23b5c0f5c9c085d0d8d862c176db27a4b879426a..c37715002300606400ccafbf7e3567aab891f775 100644
--- a/program/Source/cloud/CloudAdapter.h
+++ b/program/Source/cloud/CloudAdapter.h
@@ -16,9 +16,17 @@
  * we only need to implement this each time
  */
 class CloudAdapter {
+protected:
+	std::string fragFolder;
+	std::string cloudFolder;
 public:
 	std::string cloudID;
 
+	void setFolders(std::string _cloudFolder, std::string _fragFolder){
+		cloudFolder = _cloudFolder;
+		fragFolder = _fragFolder;
+	}
+
 	/**
 	 * CloudApater constructor
 	 * @param _cloudID the ID of the cloud that is implemented
diff --git a/program/Source/cloud/DropboxAdapter.h b/program/Source/cloud/DropboxAdapter.h
index 498a151c58e04f296d2bf58e8c8bae8ff2907e8b..93b3bbb112a222d67eb308267b2ea4b6776ff5c3 100644
--- a/program/Source/cloud/DropboxAdapter.h
+++ b/program/Source/cloud/DropboxAdapter.h
@@ -12,8 +12,6 @@
 * DropboxAdapter class
 */
 class DropboxAdapter : public CloudAdapter {
-	const std::string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
-
 	const std::string contentHost		= "content.dropboxapi.com";
 	const std::string apiHost			= "api.dropboxapi.com";
 
@@ -24,7 +22,7 @@ class DropboxAdapter : public CloudAdapter {
 
 	const std::string tokenApiPath		= "/1/oauth2/token";
 
-	const std::string appKey				= "vmwjix7pf6y3hq6";
+	const std::string appKey			= "vmwjix7pf6y3hq6";
 	const std::string appSecret			= "t0tktamnuj2y6bd";
 	const std::string authCodeType		= "authorization_code";
 
diff --git a/program/Source/cloud/FTPAdapter.cpp b/program/Source/cloud/FTPAdapter.cpp
index c932a6ffc429dcacc70e0ba64c3648add3233e68..91df91502d80c2ffd8cfa6e51eb9c4401691a6d3 100644
--- a/program/Source/cloud/FTPAdapter.cpp
+++ b/program/Source/cloud/FTPAdapter.cpp
@@ -15,7 +15,6 @@ using namespace Poco;
 using namespace boost::filesystem;
 using namespace std;
 
-const string FTPAdapter::fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
 const string FTPAdapter::USERNAME = "b18_16883957";
 const string FTPAdapter::PASSWORD = "lolwutdoge";
 const string FTPAdapter::HOST = "ftp.byethost18.com";
diff --git a/program/Source/cloud/FTPAdapter.h b/program/Source/cloud/FTPAdapter.h
index 7b95c4295257ea7e7a0137901634805f4eb2f321..8752925406440cdb059e643296a136b2a41e4e44 100644
--- a/program/Source/cloud/FTPAdapter.h
+++ b/program/Source/cloud/FTPAdapter.h
@@ -10,7 +10,6 @@
 * DropboxAdapter class
 */
 class FTPAdapter : public CloudAdapter {
-	static const std::string fragFolder;
 	static const std::string USERNAME;
 	static const std::string PASSWORD;
 	static const std::string HOST;
diff --git a/program/Source/cloud/LocalCloudAdapter.h b/program/Source/cloud/LocalCloudAdapter.h
index dc87b49cd3a1dc3e2906ba6f0fe153322efec39e..97d20c2172bffc2fe9a92a1432d8c982793dae24 100644
--- a/program/Source/cloud/LocalCloudAdapter.h
+++ b/program/Source/cloud/LocalCloudAdapter.h
@@ -13,10 +13,6 @@
 * while real clouds are not used
 */
 class LocalCloudAdapter : public CloudAdapter {
-private:
-	std::string sourceFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\";
-	std::string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
-	std::string cloudFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\cloud\\";
 public:
 	LocalCloudAdapter(std::string _cloudID = "localAdapter");
 
diff --git a/program/Source/dataAccess/CloudFileSystem.cpp b/program/Source/dataAccess/CloudFileSystem.cpp
index 419e2f0dae7faa2e61007f345640aa01bda2ae06..59c3b8f939b42c12d1dbe8775d0535f4616bbbbe 100644
--- a/program/Source/dataAccess/CloudFileSystem.cpp
+++ b/program/Source/dataAccess/CloudFileSystem.cpp
@@ -24,13 +24,31 @@ CloudFileSystem::CloudFileSystem(Application &application) :
 {
 	cfl.setPersPath("store.dat");
 	cfl.load();
-
+	encoder = new Encoder();
+	decoder = new Decoder();
 }
 
 CloudFileSystem::~CloudFileSystem(){
 	delete this->cache;
+	delete encoder;
+	delete decoder;
+}
+
+Encoder* CloudFileSystem::getEncoder(){
+	return encoder;
 }
 
+
+Decoder* CloudFileSystem::getDecoder(){
+	return decoder;
+}
+
+void CloudFileSystem::setFolders(string _fragFolder){
+	fragFolder = _fragFolder;
+}
+
+string CloudFileSystem::fragFolder = "";
+
 // Not working as we planned, maybe should be rethinked
 void CloudFileSystem::setComputeOnPi(bool computeOnPi){
 	LOG_ENTER_EXIT;
diff --git a/program/Source/dataAccess/CloudFileSystem.h b/program/Source/dataAccess/CloudFileSystem.h
index bb410b0c40630b9a68fd485dfe5d1165f902a44c..be828a811578924931a3efaf7d2fbacdf8860dfc 100644
--- a/program/Source/dataAccess/CloudFileSystem.h
+++ b/program/Source/dataAccess/CloudFileSystem.h
@@ -15,6 +15,8 @@
 #include "../networking/HomeNetworkCommunications.h"
 #include "Cache.h"
 #include "CloudFileList.h"
+#include "../dataAccess/Encoder.h"
+#include "../dataAccess/Decoder.h"
 
 class Application;
 
@@ -25,7 +27,7 @@ class Application;
  * It handles mutexes, cache usage and directories.
  */
 class CloudFileSystem {
-	std::string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
+	static std::string fragFolder;
 
 	/** 
 	 * Indicates where is the process running
@@ -55,8 +57,16 @@ class CloudFileSystem {
 	Cache *cache;
 
 	CloudFileList cfl;
+
+	Encoder* encoder;
+	Decoder* decoder;
 public: 
 
+	Encoder* getEncoder();
+	Decoder* getDecoder();
+
+	void setFolders(std::string _fragFolder);
+
 	static CloudFileSystem& getInstance();
 	/*{
 		static CloudFileSystem instance;
diff --git a/program/Source/dataAccess/Decoder.cpp b/program/Source/dataAccess/Decoder.cpp
index 27ecadd5d27e7cfbf915ddc3eaf6a126a4995e9c..3dffc8e68d1e2c61c68fd65ff1f0a1a68e7b4e45 100644
--- a/program/Source/dataAccess/Decoder.cpp
+++ b/program/Source/dataAccess/Decoder.cpp
@@ -14,10 +14,20 @@ using namespace std;
  * Decoder implementation
  */
 
+void Decoder::setFolders(string _dataFolder, string _fragFolder){
+	dataFolder = _dataFolder;
+	fragFolder = _fragFolder;
+}
+
+string Decoder::dataFolder = "";
+string Decoder::fragFolder = "";
+
 string Decoder::decode(FileDescriptor* fileDescriptor)
 {
-	string dataFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\";
-	string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
+	if (dataFolder == "" || fragFolder == "") {
+		cout << "Error: folders not set." << endl;
+		return NULL;
+	}
 
 	LOG_ENTER_EXIT;
 	if (fileDescriptor == nullptr)
diff --git a/program/Source/dataAccess/Decoder.h b/program/Source/dataAccess/Decoder.h
index cd4f0388d537c92a43f83d0bb0232dbeefe34fea..712a72ac5e2497ac96686fe051bd2ab955977d7b 100644
--- a/program/Source/dataAccess/Decoder.h
+++ b/program/Source/dataAccess/Decoder.h
@@ -9,8 +9,11 @@
  * it uses an external library
  */
 class Decoder {
-public: 
-	
+	static std::string dataFolder;
+	static std::string fragFolder;
+public:
+	void setFolders(std::string _dataFolder, std::string _fragFolder);
+		
 	/**
 	 * decodes the fragments to a file 
 	 * @param fileDescriptor descriptor of the file to decode
diff --git a/program/Source/dataAccess/Encoder.cpp b/program/Source/dataAccess/Encoder.cpp
index c942ba92b9f92e652e408fc2be75fe339332f222..2907d1bfe97d3fce995f263382767f27e34ba8b2 100644
--- a/program/Source/dataAccess/Encoder.cpp
+++ b/program/Source/dataAccess/Encoder.cpp
@@ -17,10 +17,20 @@ using namespace boost;
 using namespace filesystem;
 using namespace std;
 
+void Encoder::setFolders(string _dataFolder, string _fragFolder){
+	dataFolder = _dataFolder;
+	fragFolder = _fragFolder;
+}
+
+string Encoder::dataFolder = "";
+string Encoder::fragFolder = "";
+
 FileDescriptor* Encoder::encode(string localFileID, string destinationFileID) {
 	LOG_ENTER_EXIT;
-	string dataFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\data\\";
-	string fragFolder = "C:\\Users\\krisz\\raspberrycloud\\skeleton\\Program\\temp\\";
+	if (dataFolder == "" || fragFolder == "") {
+		cout << "Error: folders not set." << endl;
+		return NULL;
+	}
 
 	string encode_filename = dataFolder + localFileID;
 
diff --git a/program/Source/dataAccess/Encoder.h b/program/Source/dataAccess/Encoder.h
index 8c5a4dda3bb85f4c8ac8e45cf3692ee5502f3567..d86253091300505cec6152c9964fd67f2a35aca5 100644
--- a/program/Source/dataAccess/Encoder.h
+++ b/program/Source/dataAccess/Encoder.h
@@ -10,8 +10,11 @@
  * it uses an external library
  */
 class Encoder {
-public: 
-	
+	static std::string dataFolder;
+	static std::string fragFolder;
+public: 	
+	void setFolders(std::string _dataFolder, std::string _fragFolder);
+
 	/**
 	 * encodes the file to fragments
 	 * @param localFileID id of the file to encode