diff --git a/3d_party/libcurl/install_VS2017.cmd b/3d_party/libcurl/install_VS2017.cmd
new file mode 100644
index 0000000000000000000000000000000000000000..cff0e0dade253649c4e08ce4cc7dcf269143959e
--- /dev/null
+++ b/3d_party/libcurl/install_VS2017.cmd
@@ -0,0 +1,21 @@
+:: download and untar libcurl sources to dir
+:: https://curl.haxx.se/download/curl-7.58.0.tar.gz
+
+:: set directory with libcurl sources
+SET dir=c:\tmp\curl-7.58.0
+:: set directory where libcurl should be installed
+SET install_dir=c:\Curl
+
+set mypath=%cd%
+
+call "c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"
+
+cd /d %dir%\winbuild
+
+nmake.exe /f Makefile.vc mode=static VC=14 MACHINE=X86 RTLIBCFG=static
+
+xcopy /isvy %dir%\builds\libcurl-vc14-X86-release-static-ipv6-sspi-winssl\include %install_dir%\include
+xcopy /isvy %dir%\builds\libcurl-vc14-X86-release-static-ipv6-sspi-winssl\lib %install_dir%\lib
+rename %install_dir%\lib\libcurl_a.lib libcurl.lib
+
+
diff --git a/common/cpp/include/common/error.h b/common/cpp/include/common/error.h
index 0973b90f62a3b49ad3434c419518667403ccfcd7..962fe89ce175f7f121ff56b39c76b1cc401e6feb 100644
--- a/common/cpp/include/common/error.h
+++ b/common/cpp/include/common/error.h
@@ -2,6 +2,7 @@
 #define HIDRA2_ERROR_H
 
 #include <string>
+#include <memory>
 
 namespace hidra2 {
 
diff --git a/common/cpp/src/system_io/system_io_windows.cpp b/common/cpp/src/system_io/system_io_windows.cpp
index 171ab2838a1f5e6752d5af9a956d6621003e06a8..d4816ef18d8359109a02543bccaab442f4abf374 100644
--- a/common/cpp/src/system_io/system_io_windows.cpp
+++ b/common/cpp/src/system_io/system_io_windows.cpp
@@ -16,8 +16,7 @@ Error IOErrorFromGetLastError() {
     const char* message;
     switch (GetLastError()) {
     case ERROR_SUCCESS :
-        message = IOErrors::kNoError;
-        break;
+        return nullptr;
     case ERROR_PATH_NOT_FOUND:
     case ERROR_FILE_NOT_FOUND:
         message = IOErrors::kFileNotFound;
@@ -84,7 +83,7 @@ bool IsDirectory(const WIN32_FIND_DATA f) {
 }
 
 void ProcessFileEntity(const WIN32_FIND_DATA f, const std::string& path,
-                       FileInfos* files, Errors* err) {
+                       FileInfos* files, Error* err) {
 
     *err = nullptr;
     if (f.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {