diff --git a/include/vapp.h b/include/vapp.h
index 7796052..70b17f2 100644
--- a/include/vapp.h
+++ b/include/vapp.h
@@ -3,6 +3,10 @@
 
 #include "vgl.h"
 
+#ifndef _WIN32
+#include <sys/time.h>
+#endif
+
 class VermilionApplication
 {
 protected:
diff --git a/include/vec.h b/include/vec.h
index e2227b6..b9cd049 100644
--- a/include/vec.h
+++ b/include/vec.h
@@ -11,7 +11,7 @@
 #  define _USE_MATH_DEFINES 1
 #endif
 
-#include <math.h>
+#include <cmath>
 #include <iostream>
 
 const float  DegreesToRadians = static_cast<float>(M_PI / 180.0f);
diff --git a/lib/LoadShaders.cpp b/lib/LoadShaders.cpp
index 58dd41d..db6b6fe 100644
--- a/lib/LoadShaders.cpp
+++ b/lib/LoadShaders.cpp
@@ -6,6 +6,7 @@
 
 #include <cstdlib>
 #include <iostream>
+#include <cstdio>
 
 #include <GL3/gl3w.h>
 #include "LoadShaders.h"
diff --git a/lib/vbm.cpp b/lib/vbm.cpp
index 22f3968..aafd613 100644
--- a/lib/vbm.cpp
+++ b/lib/vbm.cpp
@@ -4,6 +4,7 @@
 #include "vgl.h"
 
 #include <stdio.h>
+#include <string.h>
 
 VBObject::VBObject(void)
     : m_vao(0),
diff --git a/lib/vdds.cpp b/lib/vdds.cpp
index e417679..4fe86f4 100644
--- a/lib/vdds.cpp
+++ b/lib/vdds.cpp
@@ -602,44 +602,47 @@ void vglLoadDDS(const char* filename, vglImageData* image)
 
     if (image->target == GL_NONE)
         goto done_close_file;
+    
+    {
+        size_t current_pos = ftell(f);
+        size_t file_size;
+        fseek(f, 0, SEEK_END);
+        file_size = ftell(f);
+        fseek(f, (long)current_pos, SEEK_SET);
 
-    size_t current_pos = ftell(f);
-    size_t file_size;
-    fseek(f, 0, SEEK_END);
-    file_size = ftell(f);
-    fseek(f, (long)current_pos, SEEK_SET);
+        image->totalDataSize = file_size - current_pos;
+        image->mip[0].data = new uint8_t [image->totalDataSize];
 
-    image->totalDataSize = file_size - current_pos;
-    image->mip[0].data = new uint8_t [image->totalDataSize];
+        fread(image->mip[0].data, file_size - current_pos, 1, f);
 
-    fread(image->mip[0].data, file_size - current_pos, 1, f);
+        int level;
+        GLubyte * ptr = reinterpret_cast<GLubyte*>(image->mip[0].data);
 
-    int level;
-    GLubyte * ptr = reinterpret_cast<GLubyte*>(image->mip[0].data);
+        int width = file_header.std_header.width;
+        int height = file_header.std_header.height;
+        int depth = file_header.std_header.depth;
 
-    int width = file_header.std_header.width;
-    int height = file_header.std_header.height;
-    int depth = file_header.std_header.depth;
+        image->sliceStride = 0;
 
-    image->sliceStride = 0;
+        if (image->mipLevels == 0)
+        {
+            image->mipLevels = 1;
+        }
 
-    if (image->mipLevels == 0)
-    {
-        image->mipLevels = 1;
-    }
+        for (level = 0; level < image->mipLevels; ++level)
+        {
+            image->mip[level].data = ptr;
+            image->mip[level].width = width;
+            image->mip[level].height = height;
+            image->mip[level].depth = depth;
+            image->mip[level].mipStride = vgl_GetDDSStride(file_header, width) * height;
+            image->sliceStride += image->mip[level].mipStride;
+            ptr += image->mip[level].mipStride;
+            width >>= 1;
+            height >>= 1;
+            depth >>= 1;
+        }
 
-    for (level = 0; level < image->mipLevels; ++level)
-    {
-        image->mip[level].data = ptr;
-        image->mip[level].width = width;
-        image->mip[level].height = height;
-        image->mip[level].depth = depth;
-        image->mip[level].mipStride = vgl_GetDDSStride(file_header, width) * height;
-        image->sliceStride += image->mip[level].mipStride;
-        ptr += image->mip[level].mipStride;
-        width >>= 1;
-        height >>= 1;
-        depth >>= 1;
     }
 
 done_close_file:
diff --git a/src/10-fur/10-fur.cpp b/src/10-fur/10-fur.cpp
index d9ce31a..b478f4a 100644
--- a/src/10-fur/10-fur.cpp
+++ b/src/10-fur/10-fur.cpp
@@ -13,6 +13,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 BEGIN_APP_DECLARATION(FurApplication)
     // Override functions from base class
diff --git a/src/11-doublewrite/11-doublewrite.cpp b/src/11-doublewrite/11-doublewrite.cpp
index 0ad0f60..d637ef7 100644
--- a/src/11-doublewrite/11-doublewrite.cpp
+++ b/src/11-doublewrite/11-doublewrite.cpp
@@ -14,6 +14,7 @@
 #include "LoadShaders.h"
 
 #include <stdio.h>
+#include <string.h>
 #include <string>
 
 #define MAX_FRAMEBUFFER_WIDTH 2048
diff --git a/src/11-oit/11-oit.cpp b/src/11-oit/11-oit.cpp
index 20fd8cc..aa626cb 100644
--- a/src/11-oit/11-oit.cpp
+++ b/src/11-oit/11-oit.cpp
@@ -14,6 +14,7 @@
 #include "LoadShaders.h"
 
 #include <stdio.h>
+#include <string.h>
 #include <string>
 
 #define MAX_FRAMEBUFFER_WIDTH 2048
diff --git a/src/11-overdrawcount/11-overdrawcount.cpp b/src/11-overdrawcount/11-overdrawcount.cpp
index 2666377..dffec53 100644
--- a/src/11-overdrawcount/11-overdrawcount.cpp
+++ b/src/11-overdrawcount/11-overdrawcount.cpp
@@ -14,6 +14,7 @@
 #include "LoadShaders.h"
 
 #include <stdio.h>
+#include <string.h>
 #include <string>
 
 #define MAX_FRAMEBUFFER_WIDTH 2048
diff --git a/src/12-particlesimulator/12-particlesimulator.cpp b/src/12-particlesimulator/12-particlesimulator.cpp
index ea90b5e..ad0b266 100644
--- a/src/12-particlesimulator/12-particlesimulator.cpp
+++ b/src/12-particlesimulator/12-particlesimulator.cpp
@@ -111,7 +111,7 @@ void ComputeParticleSimulator::Initialize(const char * title)
 
     static const char compute_shader_source[] =
         STRINGIZE(
-#version 430 core\n
+version 430 core\n
 
 layout (std140, binding = 0) uniform attractor_block
 {