diff --git a/src/biome.cpp b/src/biome.cpp
index 80b8d8f4f9059d75ff1d0345bf997e43d1b6d213..69d2dc2f20b66c0a2af64d71e5a7956c7f0b2ef2 100644
--- a/src/biome.cpp
+++ b/src/biome.cpp
@@ -181,7 +181,8 @@ int Biome::getSurfaceHeight(float noise_terrain) {
 }
 
 
-void Biome::genColumn(MapgenV7 *mg, int x, int z, int y1, int y2) {
+void Biome::genColumn(Mapgen *mapgen, int x, int z, int y1, int y2) {
+	MapgenV7 *mg = (MapgenV7 *)mapgen;
 	int i = (z - mg->node_min.Z) * mg->csize.Z + (x - mg->node_min.X);
 	int surfaceh = np->offset + np->scale * mg->map_terrain[i];
 
@@ -214,7 +215,8 @@ void Biome::genColumn(MapgenV7 *mg, int x, int z, int y1, int y2) {
 ///////////////////////////// [ Ocean biome ] /////////////////////////////////
 
 
-void BiomeLiquid::genColumn(MapgenV7 *mg, int x, int z, int y1, int y2) {
+void BiomeLiquid::genColumn(Mapgen *mapgen, int x, int z, int y1, int y2) {
+	MapgenV7 *mg = (MapgenV7 *)mapgen;
 	int i = (z - mg->node_min.Z) * mg->csize.Z + (x - mg->node_min.X);
 	int surfaceh = np->offset + np->scale * mg->map_terrain[i];
 	int y = y1;
@@ -239,8 +241,9 @@ int BiomeHell::getSurfaceHeight(float noise_terrain) {
 }
 
 
-void BiomeHell::genColumn(MapgenV7 *mg, int x, int z, int y1, int y2) {
-
+void BiomeHell::genColumn(Mapgen *mapgen, int x, int z, int y1, int y2) {
+	MapgenV7 *mg = (MapgenV7 *)mapgen;
+	//stub
 }
 
 
@@ -252,8 +255,9 @@ int BiomeAether::getSurfaceHeight(float noise_terrain) {
 }
 
 
-void BiomeAether::genColumn(MapgenV7 *mg, int x, int z, int y1, int y2) {
-
+void BiomeAether::genColumn(Mapgen *mapgen, int x, int z, int y1, int y2) {
+	MapgenV7 *mg = (MapgenV7 *)mapgen;
+	//stub
 }
 
 
@@ -265,7 +269,8 @@ int BiomeSuperflat::getSurfaceHeight(float noise_terrain) {
 }
 
 
-void BiomeSuperflat::genColumn(MapgenV7 *mg, int x, int z, int y1, int y2) {
+void BiomeSuperflat::genColumn(Mapgen *mapgen, int x, int z, int y1, int y2) {
+	MapgenV7 *mg = (MapgenV7 *)mapgen;
 	int surfaceh = ntopnodes;
 	int y = y1;
 
diff --git a/src/biome.h b/src/biome.h
index 3bf7a5d34351c58c041848a324c193ccd658b1f0..265f1df442ec62412f49405e789bcabf51a0c2d9 100644
--- a/src/biome.h
+++ b/src/biome.h
@@ -53,26 +53,26 @@ class Biome {
 	std::string name;
 	NoiseParams *np;
 
-	virtual void genColumn(MapgenV7 *mg, int x, int z, int y1, int y2);
+	virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
 	virtual int getSurfaceHeight(float noise_terrain);
 };
 
 class BiomeLiquid : public Biome {
-	virtual void genColumn(MapgenV7 *mg, int x, int z, int y1, int y2);
+	virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
 };
 
 class BiomeHell : public Biome {
-	virtual void genColumn(MapgenV7 *mg, int x, int z, int y1, int y2);
+	virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
 	virtual int getSurfaceHeight(float noise_terrain);
 };
 
 class BiomeAether : public Biome {
-	virtual void genColumn(MapgenV7 *mg, int x, int z, int y1, int y2);
+	virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
 	virtual int getSurfaceHeight(float noise_terrain);
 };
 
 class BiomeSuperflat : public Biome {
-	virtual void genColumn(MapgenV7 *mg, int x, int z, int y1, int y2);
+	virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
 	virtual int getSurfaceHeight(float noise_terrain);
 };
 
diff --git a/src/irrlichttypes.h b/src/irrlichttypes.h
index 998992e05d457093a724c2850078d213aff80ba1..2db744a48fff743020c4738503f2b198a5d501c7 100644
--- a/src/irrlichttypes.h
+++ b/src/irrlichttypes.h
@@ -28,12 +28,13 @@ using namespace irr;
 #if (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 8)
 #ifdef _MSC_VER
 	// Windows
+	typedef long long s64;
 	typedef unsigned long long u64;
 #else
 	// Posix
 	#include <stdint.h>
+	typedef int64_t s64;
 	typedef uint64_t u64;
-	//typedef unsigned long long u64;
 #endif
 #endif
 
diff --git a/src/porting.h b/src/porting.h
index 2f9d43acaa38ff1d3c898aec38dc87f9091a2859..0062c11f3f426b9820e59bfedc2329f1f7cd2db8 100644
--- a/src/porting.h
+++ b/src/porting.h
@@ -35,14 +35,28 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 	#define SWPRINTF_CHARSTRING L"%s"
 #endif
 
+//currently not needed
+//template<typename T> struct alignment_trick { char c; T member; };
+//#define ALIGNOF(type) offsetof (alignment_trick<type>, member)
+
 #ifdef _WIN32
 	#include <windows.h>
+	
+	#define ALIGNOF(x) __alignof(x)
 	#define sleep_ms(x) Sleep(x)
+	#define strtok_r(x, y, z) strtok_s(x, y, z)
+	#define strtof(x, y) (float)strtod(x, y)
+	#define strtoll(x, y, z) _strtoi64(x, y, z)
+	#define strtoull(x, y, z) _strtoui64(x, y, z)
 #else
 	#include <unistd.h>
+	
+	#define ALIGNOF(x) __alignof__(x)
 	#define sleep_ms(x) usleep(x*1000)
 #endif
 
+#define PADDING(x, y) ((ALIGNOF(y) - ((uintptr_t)(x) & (ALIGNOF(y) - 1))) & (ALIGNOF(y) - 1))
+
 namespace porting
 {
 
diff --git a/src/settings.h b/src/settings.h
index 18d6ade7245c185fad1c1cc457e15c6ffee81f9b..6d6db220c1871cbc496aca76c929e42103db2ef4 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -32,6 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "debug.h"
 #include "log.h"
 #include "util/string.h"
+#include "porting.h"
 
 enum ValueType
 {
@@ -566,23 +567,6 @@ class Settings
 		return value;
 	}
 
-//template<typename T> struct alignment_trick { char c; T member; };
-//#define ALIGNOF(type) offsetof (alignment_trick<type>, member)
-#ifdef _WIN32
-	#define ALIGNOF(x) __alignof(x)
-#else
-	#define ALIGNOF(x) __alignof__(x)
-#endif
-#define PADDING(x, y) ((ALIGNOF(y) - ((uintptr_t)(x) & (ALIGNOF(y) - 1))) & (ALIGNOF(y) - 1))
-#ifdef _WIN32
-	#define strtok_r(x, y, z) strtok_s(x, y, z)
-	#define strtof(x, y) (float)strtod(x, y)
-	#define strtoll(x, y, z) _strtoi64(x, y, z)
-	#define strtoull(x, y, z) _strtoui64(x, y, z)
-#endif
-
-typedef long long int s64; //to be added to src/irrlichttypes.h later
-
 	template <class T> T *getStruct(std::string name, std::string format)
 	{
 		size_t len = sizeof(T);