-#pragma warning(disable:4244) // warning C4244: '=' : conversion from 'long' to 'short', possible loss of data
-#pragma warning(disable:4267) // warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
-#pragma warning(disable:4805) // warning C4805: '!=' : unsafe mix of type 'char' and type 'bool' in operation
-#pragma warning(disable:4311) // warning C4311: 'type cast' : pointer truncation from 'accept_overlap *' to 'int'
-#pragma warning(disable:4312) // warning C4312: 'type cast' : conversion from 'int' to 'HANDLE' of greater size
-#pragma warning(disable:4355) // warning C4355: 'this' : used in base member initializer list
-#pragma warning(disable:4996) // warning C4996: 'std::_Traits_helper::move_s' was declared deprecated
-
-/* Mehhhh... typedefs. */
-
-typedef unsigned char uint8_t;
-typedef unsigned long long uint64_t;
-typedef signed char int8_t;
-typedef signed long int32_t;
-typedef signed long long int64_t;
+
+// warning: unreferenced formal parameter
+// Unimportant for now, but for the next version, we should take a look at these again.
+#pragma warning(disable:4100)
+
+// warning: 'class' : assignment operator could not be generated
+#pragma warning(disable:4512)
+
+// warning C4127: conditional expression is constant
+// This will be triggered like crazy because FOREACH_MOD and similar macros are wrapped in do { ... } while(0) constructs
+#pragma warning(disable:4127)
+
+// warning C4996: The POSIX name for this item is deprecated.
+#pragma warning(disable:4996)
+
+// warning C4244: conversion from 'x' to 'y', possible loss of data
+#pragma warning(disable:4244)
+
+// warning C4267: 'var' : conversion from 'size_t' to 'type', possible loss of data
+#pragma warning(disable:4267)
+
+// warning C4706: assignment within conditional expression
+#pragma warning(disable:4706)
+
+// warning C4355: 'this' : used in base member initializer list
+// This warning is disabled by default since VC2012
+#if _MSC_VER < 1700
+#pragma warning(disable:4355)
+#endif