diff --git a/dirt.lua b/dirt.lua
index 3b5d92025301cee8a7c1da614479d0654fa0dadb..cbc1f2a1588d3eea108b80bcd60d19876528521b 100644
--- a/dirt.lua
+++ b/dirt.lua
@@ -45,7 +45,7 @@ minetest.register_craft({
 
 local dirts = {
 	"Bamboo", "Jungle", "Mesa", "Grove", "Prairie", "Cold",
-	"Crystal", "Mushroom", "Fiery", "Gray"
+	"Crystal", "Mushroom", "Fiery", "Gray", "Swamp"
 }
 
 for n = 1, #dirts do
@@ -80,6 +80,7 @@ dirts = {
 	"ethereal:mushroom_dirt", "ethereal:fiery_dirt", "ethereal:gray_dirt",
 	"default:dirt_with_grass", "default:dirt_with_dry_grass", "ethereal:green_dirt",
 	"default:dirt_with_snow", "default:dirt_with_dry_grass", "ethereal:mesa_dirt",
+	"ethereal:swamp_dirt"
 }
 
 -- check surrounding grass and change dirt to same colour
diff --git a/mapgen.lua b/mapgen.lua
index d8691082fabfa76ac0e3a6adb19f4f64f74dcefc..0c2088f6a22945b8f8ec9a62c5521526708f1e3b 100644
--- a/mapgen.lua
+++ b/mapgen.lua
@@ -85,10 +85,10 @@ add_biome("mesa_ocean", nil, "default:sand", 1, "default:sand", 2,
 	nil, nil, nil, nil, nil, -192, 1, 25, 28, ethereal.mesa)
 
 add_biome("alpine", nil, "default:dirt_with_snow", 1, "default:dirt", 2,
-	nil, nil, 1, "default:ice", nil, 40, 136, 15, 35, ethereal.alpine)
+	nil, nil, 1, "default:ice", nil, 62, 196, 15, 35, ethereal.alpine)
 
 add_biome("snowy", nil, "ethereal:cold_dirt", 1, "default:dirt", 2,
-	nil, nil, nil, nil, nil, 6, 92, 10, 40, ethereal.snowy)
+	nil, nil, nil, nil, nil, 6, 82, 10, 40, ethereal.snowy)
 
 add_biome("frost", nil, "ethereal:crystal_dirt", 4, "default:dirt", 3,
 	nil, "default:ice", 1, nil, "default:ice", 1, 83, 10, 40, ethereal.frost)
@@ -180,7 +180,7 @@ add_biome("fiery_ocean", nil, "default:sand", 1, "default:sand", 2,
 add_biome("sandclay", nil, "default:sand", 3, "default:clay", 2,
 	nil, nil, nil, nil, nil, 1, 11, 65, 2, ethereal.sandclay)
 
-add_biome("swamp", nil, "ethereal:green_dirt", 1, "default:dirt", 3,
+add_biome("swamp", nil, "ethereal:swamp_dirt", 1, "default:dirt", 3,
 	nil, nil, nil, nil, nil, 1, 7, 80, 90, ethereal.swamp)
 
 add_biome("swamp_ocean", nil, "default:sand", 2, "default:clay", 2,
@@ -247,6 +247,7 @@ add_schem({"ethereal:gray_dirt"}, 0.02, {"grayness"}, 1, 100, path .. "willow.mt
 -- pine tree (default for lower elevation and ethereal for higher)
 add_schem({"ethereal:cold_dirt"}, 0.025, {"snowy"}, 10, 40, dpath .. "pine_tree.mts", ethereal.snowy)
 add_schem({"default:dirt_with_snow"}, 0.025, {"alpine"}, 40, 140, path .. "pinetree.mts", ethereal.alpine)
+add_schem({"default:dirt_with_snow"}, 0.015, {"alpine"}, 40, 110, dpath .. "pine_tree.mts", ethereal.alpine)
 
 -- default apple tree
 add_schem({"ethereal:green_dirt"}, 0.02, {"jumble"}, 1, 100, dpath .. "apple_tree.mts", ethereal.grassy)
@@ -306,10 +307,9 @@ add_schem({"ethereal:bamboo_dirt"}, 0.025, {"bamboo"}, 1, 100, ethereal.bambootr
 add_schem({"ethereal:bamboo_dirt"}, 0.08, {"bamboo"}, 1, 100, ethereal.bush, ethereal.bamboo)
 
 -- vine tree
-add_schem({"ethereal:green_dirt"}, 0.02, {"swamp"}, 1, 100, path .. "vinetree.mts", ethereal.swamp)
+add_schem({"ethereal:swamp_dirt"}, 0.02, {"swamp"}, 1, 100, path .. "vinetree.mts", ethereal.swamp)
 
 --= simple decorations
-
 local add_node = function(a, b, c, d, e, f, g, h, i, j)
 
 	if j ~= 1 then return end
@@ -395,7 +395,7 @@ local list = {
 	{"grassytwo", "ethereal:green_dirt", ethereal.grassytwo},
 	{"prairie", "ethereal:prairie_dirt", ethereal.prairie},
 	{"mushroom", "ethereal:mushroom_dirt", ethereal.mushroom},
-	{"swamp", "ethereal:green_dirt", ethereal.swamp},
+	{"swamp", "ethereal:swamp_dirt", ethereal.swamp},
 }
 
 -- wild red and brown mushrooms
@@ -452,11 +452,15 @@ add_node({"default:sand"}, 0.25, {"sandclay"}, 3, 4, {"default:grass_2", "defaul
 
 -- ferns
 add_node({"ethereal:grove_dirt","ethereal:jungle_dirt","ethereal:mesa_dirt"}, 0.2, {"grove","junglee","mesa"}, 1, 100, {"ethereal:fern"}, nil, nil, nil, ethereal.grove)
-add_node({"ethereal:green_dirt"}, 0.1, {"swamp"}, 1, 100, {"ethereal:fern"}, nil, nil, nil, ethereal.swamp)
+add_node({"ethereal:swamp_dirt"}, 0.1, {"swamp"}, 1, 100, {"ethereal:fern"}, nil, nil, nil, ethereal.swamp)
 
 -- snow
-add_node({"ethereal:cold_dirt"}, 0.8, {"snowy"}, 4, 40, {"default:snow"}, nil, nil, nil, ethereal.snowy)
+add_node({"ethereal:cold_dirt"}, 0.6, {"snowy"}, 4, 40, {"default:snow"}, nil, nil, nil, ethereal.snowy)
 add_node({"default:dirt_with_snow"}, 0.8, {"alpine"}, 40, 140, {"default:snow"}, nil, nil, nil, ethereal.alpine)
+add_node({"ethereal:green_dirt"}, 0.8, {"clearing","grassytwo"}, 86, 140, {"default:snow"}, nil, nil, nil, ethereal.alpine)
+add_node({"ethereal:green_dirt"}, 0.4, {"clearing","grassytwo"}, 76, 86, {"default:snow"}, nil, nil, nil, ethereal.alpine)
+add_node({"ethereal:green_dirt"}, 0.1, {"clearing","grassytwo"}, 72, 76, {"default:snow"}, nil, nil, nil, ethereal.alpine)
+add_node({"ethereal:green_dirt"}, 0.04, {"clearing","grassytwo"}, 68, 72, {"default:snow"}, nil, nil, nil, ethereal.alpine)
 
 -- wild onion
 add_node({"ethereal:green_dirt"}, 0.25, {"grassy"}, 1, 100, {"ethereal:onion_4"}, nil, nil, nil, ethereal.grassy)
@@ -467,7 +471,7 @@ add_node({"ethereal:prairie_dirt"}, 0.25, {"prairie"}, 1, 100, {"ethereal:onion_
 -- papyrus
 add_node({"ethereal:green_dirt"}, 0.1, {"grassy"}, 1, 1, {"default:papyrus"}, 4, "default:water_source", 1, ethereal.grassy)
 add_node({"ethereal:jungle_dirt"}, 0.1, {"junglee"}, 1, 1, {"default:papyrus"}, 4, "default:water_source", 1, ethereal.junglee)
-add_node({"ethereal:green_dirt"}, 0.1, {"swamp"}, 1, 1, {"default:papyrus"}, 4, "default:water_source", 1, ethereal.swamp)
+add_node({"ethereal:swamp_dirt"}, 0.1, {"swamp"}, 1, 1, {"default:papyrus"}, 4, "default:water_source", 1, ethereal.swamp)
 
 --= Farming Redo plants
 
diff --git a/schematics/iska_birch1.mts b/schematics/iska_birch1.mts
new file mode 100644
index 0000000000000000000000000000000000000000..dc48e0455076fc47f5f5ea6a67e450a48da23864
Binary files /dev/null and b/schematics/iska_birch1.mts differ
diff --git a/schematics/iska_birch2.mts b/schematics/iska_birch2.mts
new file mode 100644
index 0000000000000000000000000000000000000000..1221858086174fed482b8589b73fdc703485f8e8
Binary files /dev/null and b/schematics/iska_birch2.mts differ
diff --git a/schematics/pine_tree.mts b/schematics/pine_tree.mts
new file mode 100644
index 0000000000000000000000000000000000000000..3a3fa7ad0e7f7c3bbd3282856d1985734b62d702
Binary files /dev/null and b/schematics/pine_tree.mts differ
diff --git a/textures/ethereal_grass_mushroom_side.png b/textures/ethereal_grass_mushroom_side.png
index a5adde02ff9746fcc50795835c56ed70b021b558..ebc1e3d2746815f51b4be5eae1e4bf9a18bd04aa 100644
Binary files a/textures/ethereal_grass_mushroom_side.png and b/textures/ethereal_grass_mushroom_side.png differ
diff --git a/textures/ethereal_grass_mushroom_top.png b/textures/ethereal_grass_mushroom_top.png
index 90772a7cc520c8478f3a501a7c4d63ab4ff12662..70f1433707a076bbc3c064b23ff8d4efb2dbbaf8 100644
Binary files a/textures/ethereal_grass_mushroom_top.png and b/textures/ethereal_grass_mushroom_top.png differ
diff --git a/textures/ethereal_grass_swamp_side.png b/textures/ethereal_grass_swamp_side.png
new file mode 100644
index 0000000000000000000000000000000000000000..791fbe15c202cf6a90440c53d41f0a48b69c7b5b
Binary files /dev/null and b/textures/ethereal_grass_swamp_side.png differ
diff --git a/textures/ethereal_grass_swamp_top.png b/textures/ethereal_grass_swamp_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..01a47b1bfc7d61d493813ad13c29835dd777ec55
Binary files /dev/null and b/textures/ethereal_grass_swamp_top.png differ