diff --git a/FocusTerra/.vs/FocusTerra/v16/.suo b/FocusTerra/.vs/FocusTerra/v16/.suo
index 101a527bdfcf8adf90018007ac35ad4447a3b227..f03bebdeae496a4b4859748f0a6c2243c96c4ff9 100644
Binary files a/FocusTerra/.vs/FocusTerra/v16/.suo and b/FocusTerra/.vs/FocusTerra/v16/.suo differ
diff --git a/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/2497ca4debdda90c/SLIM_BLOCKCHAIN_HANDLER.ipch b/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/2497ca4debdda90c/SLIM_BLOCKCHAIN_HANDLER.ipch
index 604ff8914891d5f914c2e3f4aec108b91110d15a..a6468645ed556230bf06c722f85748be1966ff3c 100644
Binary files a/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/2497ca4debdda90c/SLIM_BLOCKCHAIN_HANDLER.ipch and b/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/2497ca4debdda90c/SLIM_BLOCKCHAIN_HANDLER.ipch differ
diff --git a/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/3b7f66ca6222ba83/GUI_HANDLER.ipch b/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/3b7f66ca6222ba83/GUI_HANDLER.ipch
index 61a6ff0b134564b14fb6e5e813b2267e796d870a..daf22a08640001ac0701280f40d714f996d31ea5 100644
Binary files a/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/3b7f66ca6222ba83/GUI_HANDLER.ipch and b/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/3b7f66ca6222ba83/GUI_HANDLER.ipch differ
diff --git a/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/cb00a5d01c33728d/MAIN_TESTING.ipch b/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/cb00a5d01c33728d/MAIN_TESTING.ipch
index ce6caaf3110cb14ed7632cd9f13c1c4bcd4e5375..02f8ebbc872e119deea06dd1d791f84a6732f160 100644
Binary files a/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/cb00a5d01c33728d/MAIN_TESTING.ipch and b/FocusTerra/.vs/FocusTerra/v16/ipch/AutoPCH/cb00a5d01c33728d/MAIN_TESTING.ipch differ
diff --git a/FocusTerra/FocusTerra/x64/Release/FocusTerra.iobj b/FocusTerra/FocusTerra/x64/Release/FocusTerra.iobj
index 78e660f7a02909e68c210bd042841282ec5e60aa..9465b1071627190bc13e0cf01e8ba8687cf67fa1 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/FocusTerra.iobj and b/FocusTerra/FocusTerra/x64/Release/FocusTerra.iobj differ
diff --git a/FocusTerra/FocusTerra/x64/Release/FocusTerra.ipdb b/FocusTerra/FocusTerra/x64/Release/FocusTerra.ipdb
index ac5283fa3e44d054c46d2984f14276b98f720ae4..6f8f790cb16fd0e6ba716da79fc623ef10292b66 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/FocusTerra.ipdb and b/FocusTerra/FocusTerra/x64/Release/FocusTerra.ipdb differ
diff --git a/FocusTerra/FocusTerra/x64/Release/FocusTerra.log b/FocusTerra/FocusTerra/x64/Release/FocusTerra.log
index 4f9017ae03aba75f14315c8a1c4baafdbeefcea5..6eb02c5fba460a01d3a49d6be9574e14b54d36a1 100644
--- a/FocusTerra/FocusTerra/x64/Release/FocusTerra.log
+++ b/FocusTerra/FocusTerra/x64/Release/FocusTerra.log
@@ -1,99 +1,36 @@
   main_testing.cpp
 C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\include\drawing_handler.hpp(29,21): warning C4305: 'initializing': truncation from 'double' to 'float'
-  slim_blockchain_handler.cpp
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(153,40): warning C4267: 'argument': conversion from 'size_t' to 'GLint', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(168,40): warning C4267: 'argument': conversion from 'size_t' to 'GLint', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(174,40): warning C4267: 'argument': conversion from 'size_t' to 'GLint', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(189,40): warning C4267: 'argument': conversion from 'size_t' to 'GLint', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(195,40): warning C4267: 'argument': conversion from 'size_t' to 'GLint', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(253,16): warning C4244: 'initializing': conversion from 'int' to 'float', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(254,59): warning C4244: 'argument': conversion from 'float' to 'int', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(254,56): warning C4244: 'argument': conversion from 'float' to 'int', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(274,16): warning C4244: 'initializing': conversion from 'int' to 'float', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(275,59): warning C4244: 'argument': conversion from 'float' to 'int', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(275,56): warning C4244: 'argument': conversion from 'float' to 'int', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(282,17): warning C4244: 'initializing': conversion from 'const int' to 'float', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(283,18): warning C4244: 'initializing': conversion from 'const int' to 'float', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(291,11): warning C4244: 'initializing': conversion from 'int' to 'float', possible loss of data
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(292,11): warning C4244: 'initializing': conversion from 'const T' to 'float', possible loss of data
-          with
-          [
-              T=glm::i32
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(293,11): warning C4244: 'initializing': conversion from 'T' to 'float', possible loss of data
-          with
-          [
-              T=glm::i32
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(294,11): warning C4244: 'initializing': conversion from 'const T' to 'float', possible loss of data
-          with
-          [
-              T=glm::i32
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(296,42): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
-          with
-          [
-              _Ty=float
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(297,43): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
-          with
-          [
-              _Ty=float
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(301,46): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
-          with
-          [
-              _Ty=float
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(302,47): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
-          with
-          [
-              _Ty=float
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(306,46): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
-          with
-          [
-              _Ty=float
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(307,43): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
-          with
-          [
-              _Ty=float
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(311,42): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
-          with
-          [
-              _Ty=float
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(312,43): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
-          with
-          [
-              _Ty=float
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(316,46): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
-          with
-          [
-              _Ty=float
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(317,47): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
-          with
-          [
-              _Ty=float
-          ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(321,42): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
+  gui_handler.cpp
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(157,60): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(244,60): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(249,6): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(254,6): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(262,6): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(267,6): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(273,6): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(278,6): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(307,5): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(314,5): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(327,5): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(334,5): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(347,5): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(354,5): warning C4312: 'type cast': conversion from 'GLuint' to 'void *' of greater size
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(422,28): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
           with
           [
               _Ty=float
           ]
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\slim_blockchain_handler.cpp(322,47): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(427,51): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(433,28): warning C4244: 'argument': conversion from 'double' to '_Ty', possible loss of data
           with
           [
               _Ty=float
           ]
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\gui_handler.cpp(436,51): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data
   Generating code
-C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\main_testing.cpp(117): warning C4715: 'SDL_main': not all control paths return a value
-  1 of 2265 functions (<0.1%) were compiled, the rest were copied from previous compilation.
-    0 functions were new in current compilation
-    36 functions had inline decision re-evaluated but remain unchanged
+C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\src\main_testing.cpp(118): warning C4715: 'SDL_main': not all control paths return a value
+  9 of 2324 functions ( 0.4%) were compiled, the rest were copied from previous compilation.
+    2 functions were new in current compilation
+    54 functions had inline decision re-evaluated but remain unchanged
   Finished generating code
   FocusTerra.vcxproj -> C:\Users\engel\VS_Projects\FocusTerra\framebuffer-testing\FocusTerra\x64\Release\FocusTerra.exe
diff --git a/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.command.1.tlog b/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.command.1.tlog
index a7818467e2fed4838baa9768e2bd2e0fee798bc6..75b7394b9f86c396b1bd663991e659bd19bfaa51 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.command.1.tlog and b/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.command.1.tlog differ
diff --git a/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.read.1.tlog b/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.read.1.tlog
index 5e4992a185a9eebd4d62bdfce85c0ac83c6c3a4b..27b0664a54fe7c89973b6348d4e613f7be64641b 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.read.1.tlog and b/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.read.1.tlog differ
diff --git a/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.write.1.tlog b/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.write.1.tlog
index f0ddb83b4ce271c0916e642d88815033b6ee5b37..e6ad2436211ae948c5350df2ae3d4c98dc338fa7 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.write.1.tlog and b/FocusTerra/FocusTerra/x64/Release/FocusTerra.tlog/CL.write.1.tlog differ
diff --git a/FocusTerra/FocusTerra/x64/Release/drawer.obj b/FocusTerra/FocusTerra/x64/Release/drawer.obj
index d02f763f4c8df932f84353b5e9ef3abf3a4aed4e..a769c31eaa5e4c47a90f6772563c36a76aa373d8 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/drawer.obj and b/FocusTerra/FocusTerra/x64/Release/drawer.obj differ
diff --git a/FocusTerra/FocusTerra/x64/Release/drawing_handler.obj b/FocusTerra/FocusTerra/x64/Release/drawing_handler.obj
index af2e57dd67b030892028353b509fa79a373f3f0b..dfe42b1383f54f4ad104eebcf501aac83a50b5cf 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/drawing_handler.obj and b/FocusTerra/FocusTerra/x64/Release/drawing_handler.obj differ
diff --git a/FocusTerra/FocusTerra/x64/Release/event_logger.obj b/FocusTerra/FocusTerra/x64/Release/event_logger.obj
index 9ec5aed9f18e015ffcf4f365169f4a1e8f391af0..71d951329d517750c764baa2a3460adb1c9db802 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/event_logger.obj and b/FocusTerra/FocusTerra/x64/Release/event_logger.obj differ
diff --git a/FocusTerra/FocusTerra/x64/Release/gui_handler.obj b/FocusTerra/FocusTerra/x64/Release/gui_handler.obj
index 661317b3b88abf8051b009b7dd9b5b1d976baca2..3d1c04662b8946396aa81742ca47430914b411af 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/gui_handler.obj and b/FocusTerra/FocusTerra/x64/Release/gui_handler.obj differ
diff --git a/FocusTerra/FocusTerra/x64/Release/input_handler.obj b/FocusTerra/FocusTerra/x64/Release/input_handler.obj
index 172428dfc9e2d3f1c926a95f48308207930d69d2..686f28fdfa454f0c21b727c76533bf3c863245d8 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/input_handler.obj and b/FocusTerra/FocusTerra/x64/Release/input_handler.obj differ
diff --git a/FocusTerra/FocusTerra/x64/Release/main_testing.obj b/FocusTerra/FocusTerra/x64/Release/main_testing.obj
index aa937aa3e7ee6499e9aa7c51a6f8a53ffefc5d79..6dd85adcd5f35fc8a406c29b4ea3e3778f00376a 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/main_testing.obj and b/FocusTerra/FocusTerra/x64/Release/main_testing.obj differ
diff --git a/FocusTerra/FocusTerra/x64/Release/pevent.obj b/FocusTerra/FocusTerra/x64/Release/pevent.obj
index 257580f048528e4a779aa70a3dcaa4090d40e4fa..db0f5f61c909ad7fdb02630278328449168412ff 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/pevent.obj and b/FocusTerra/FocusTerra/x64/Release/pevent.obj differ
diff --git a/FocusTerra/FocusTerra/x64/Release/slim_blockchain_handler.obj b/FocusTerra/FocusTerra/x64/Release/slim_blockchain_handler.obj
index 4bad1790524352b8e5866774432960e5132a813a..3eeee3a82ed46b945ea2107868a855c51cffab75 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/slim_blockchain_handler.obj and b/FocusTerra/FocusTerra/x64/Release/slim_blockchain_handler.obj differ
diff --git a/FocusTerra/FocusTerra/x64/Release/toolbox.obj b/FocusTerra/FocusTerra/x64/Release/toolbox.obj
index ae6e442d21c0bca978ab02f57ff7351c78b02271..9eb08a1ee7a1ed2aa3a5a6431a9e9e75c772111c 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/toolbox.obj and b/FocusTerra/FocusTerra/x64/Release/toolbox.obj differ
diff --git a/FocusTerra/FocusTerra/x64/Release/vc142.pdb b/FocusTerra/FocusTerra/x64/Release/vc142.pdb
index 47f0e1d4a762124dd715f97c343183f937ead8bf..9994f4cb33e4a8a8c07d3d0f58cddd648dad758b 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/vc142.pdb and b/FocusTerra/FocusTerra/x64/Release/vc142.pdb differ
diff --git a/FocusTerra/FocusTerra/x64/Release/wave_handler.obj b/FocusTerra/FocusTerra/x64/Release/wave_handler.obj
index b2055f18a94959d43e1bcfb4d051289086d1b328..903eedc04314598792169bbc1dfac347f93c690f 100644
Binary files a/FocusTerra/FocusTerra/x64/Release/wave_handler.obj and b/FocusTerra/FocusTerra/x64/Release/wave_handler.obj differ
diff --git a/FocusTerra/x64/Release/FocusTerra.exe b/FocusTerra/x64/Release/FocusTerra.exe
index bc1837863664b770bfe2194d34d1e1fff21b4220..59ef9e06354f4d4bc8554ec9fbccbf2339a9d8c7 100644
Binary files a/FocusTerra/x64/Release/FocusTerra.exe and b/FocusTerra/x64/Release/FocusTerra.exe differ
diff --git a/FocusTerra/x64/Release/FocusTerra.pdb b/FocusTerra/x64/Release/FocusTerra.pdb
index f32b6df5428e0df45c773a6d8e1dfbb9ee3b4d81..3478507640f5773ef14312dbe3d442f3e83abb08 100644
Binary files a/FocusTerra/x64/Release/FocusTerra.pdb and b/FocusTerra/x64/Release/FocusTerra.pdb differ
diff --git a/include/enums.hpp b/include/enums.hpp
index 77077a4411891600094594961b6d56bf70df9195..03ed53a2511c3b14a860decfc74c741cb70ace98 100644
--- a/include/enums.hpp
+++ b/include/enums.hpp
@@ -9,7 +9,7 @@ enum class GSTATE: int { RUN, FREEZE, EXIT };//game state
 enum class MESSAGETARGET { BLOCKCHAIN, DRAWER, GUI, WAVE };
 
 //Message types
-enum class BLOCKCHAINMESSAGE : int { CLEAR, PATTERN_SINGLESLIT, PATTERN_DOUBLESLIT, PATTERN_LATTICE, PATTERN_WAVEGUIDE };
+enum class BLOCKCHAINMESSAGE : int { CLEAR, PATTERN_SINGLESLIT, PATTERN_DOUBLESLIT, PATTERN_LATTICE, PATTERN_WAVEGUIDE, PATTERN_SSH, PATTERN_FRESNEL };
 enum class DRAWERMESSAGE : int { CLEAR };
 enum class GUIMESSAGE: int {};
 enum class WAVEMESSAGE : int { RESET_WAVE, RESET_DAMPING, DIMENSION_2D, DIMENSION_3D, DEBUG_ON, DEBUG_OFF };
diff --git a/include/gui_handler.hpp b/include/gui_handler.hpp
index 646f1b3177545bde28be712e9e28c39b1df4cbea..3d89a5df1c90d41e57c0a30f2564b4e84dfcf6ea 100644
--- a/include/gui_handler.hpp
+++ b/include/gui_handler.hpp
@@ -11,7 +11,7 @@ public:
 	GuiHandler(float gui_pos): gui_pos_(gui_pos) {}
 
 	/*Needs fully initialized Infrastructure*/
-	void init(Toolbox& tb, const std::string path);
+	void init(Toolbox& tb, const std::string path_img, const std::string path_ttf);
 
 	void update(Toolbox& tb);
 
@@ -42,6 +42,11 @@ private:
 	GLuint btex_doubleslit_off_ = 0, btex_doubleslit_on_ = 0;
 	GLuint btex_lattice_off_ = 0, btex_lattice_on_ = 0;
 	GLuint btex_waveguide_off_ = 0, btex_waveguide_on_ = 0;
+	GLuint btex_ssh_off_ = 0, btex_ssh_on_ = 0;
+	GLuint btex_fresnel_off_ = 0, btex_fresnel_on_ = 0;
+
+	/*Font*/
+	ImFont* font_ = NULL;
 
 	/*Event Logger for debugging*/
 	EventLogger evlog = {};
diff --git a/include/slim_blockchain_handler.hpp b/include/slim_blockchain_handler.hpp
index 2a25f7d3bc526fdf397b5249c486eb46dc115125..90dedcde4e648fa909cfd39032ce6b5f9d702a76 100644
--- a/include/slim_blockchain_handler.hpp
+++ b/include/slim_blockchain_handler.hpp
@@ -8,10 +8,11 @@
 #include <glm/gtc/matrix_transform.hpp>
 #include <glm/gtc/type_ptr.hpp>
 #include <shader.hpp>
+#include <string>
 class SlimBlockchainHandler {
 public:
 	/*Assumes all toolbox textures are initialized*/
-	SlimBlockchainHandler(Toolbox& tb, MSTATE initial_mstate)
+	SlimBlockchainHandler(Toolbox& tb, MSTATE initial_mstate, std::string filename_ssh, std::string filename_fzp)
 		: previous_mstate_(static_cast<int>(initial_mstate)),
 		blockchain_(0),
 		dragpairs_(0),
@@ -49,6 +50,10 @@ public:
 		glEnableVertexAttribArray(1);
 		glBindVertexArray(0);
 		glBindBuffer(GL_ARRAY_BUFFER, 0);
+
+		/*Load structure textures*/
+		load_damping_texture_(tb, filename_ssh, &texture_ssh_);
+		load_damping_texture_(tb, filename_fzp, &texture_fzp_);
 	}
 
 	void update(Toolbox& tb);
@@ -63,6 +68,8 @@ private:
 	void queue_doubleslit_(Toolbox&);
 	void queue_lattice_(Toolbox&);
 	void queue_waveguide_(Toolbox&);
+	void queue_ssh_(Toolbox&);
+	void queue_fresnel_(Toolbox&);
 	//Vertex Calculation
 	void xywhs_to_vertices_(const Toolbox& tb, const std::vector<bool>& duplicates, const std::vector<glm::ivec4>& xywhs, std::vector<float>& vertices) const;
 	//Duplicate identification
@@ -83,10 +90,15 @@ private:
 	GLuint fbo_wave_ = 0;
 	GLuint fbo_dynamic_ = 0;
 	GLuint fbo_static_ = 0;
+	/*Structure textures*/
+	GLuint texture_ssh_ = 0;
+	GLuint texture_fzp_ = 0;
 	/*Drawlists*/
 	std::vector<glm::ivec4> drawlist_static_;
 	std::vector<glm::ivec4> drawlist_dynamic_;
 	std::vector<glm::ivec4> eraselist_dynamic_;
 	std::vector<bool> drawlist_dynamic_duplicates_;
 	std::vector<bool> eraselist_dynamic_duplicates_;
+	/*Texture queue and vbo data*/
+	GLuint queued_texture_ = 0;
 };
\ No newline at end of file
diff --git a/resource/bare.conf b/resource/bare.conf
new file mode 100644
index 0000000000000000000000000000000000000000..c7bb47784bb336e48f01b36eecf10374ce2c111b
--- /dev/null
+++ b/resource/bare.conf
@@ -0,0 +1,8 @@
+2560
+1440
+3160
+2640
+0
+600
+600
+600
diff --git a/resource/bare.texture b/resource/bare.texture
new file mode 100644
index 0000000000000000000000000000000000000000..961c8a56a6535f69a7ab757192a17c7bd250b019
Binary files /dev/null and b/resource/bare.texture differ
diff --git a/resource/fresnel.conf b/resource/fresnel.conf
new file mode 100644
index 0000000000000000000000000000000000000000..c7bb47784bb336e48f01b36eecf10374ce2c111b
--- /dev/null
+++ b/resource/fresnel.conf
@@ -0,0 +1,8 @@
+2560
+1440
+3160
+2640
+0
+600
+600
+600
diff --git a/resource/fresnel.texture b/resource/fresnel.texture
new file mode 100644
index 0000000000000000000000000000000000000000..afa58650e0da43f7e7f89561736d274a26067a42
Binary files /dev/null and b/resource/fresnel.texture differ
diff --git a/resource/images/fresnel_off.jpg b/resource/images/fresnel_off.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9d2c8879df8e43d0697f80789cffcf025477309a
Binary files /dev/null and b/resource/images/fresnel_off.jpg differ
diff --git a/resource/images/fresnel_on.jpg b/resource/images/fresnel_on.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0c585db2072df9e5fd462a43a6968726bc2f8cb9
Binary files /dev/null and b/resource/images/fresnel_on.jpg differ
diff --git a/resource/images/ssh_off.jpg b/resource/images/ssh_off.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..1faff6ab2fe0b2e1a2f80db9b1e232c65aef3c82
Binary files /dev/null and b/resource/images/ssh_off.jpg differ
diff --git a/resource/images/ssh_on.jpg b/resource/images/ssh_on.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0c585db2072df9e5fd462a43a6968726bc2f8cb9
Binary files /dev/null and b/resource/images/ssh_on.jpg differ
diff --git a/resource/ssh.conf b/resource/ssh.conf
new file mode 100644
index 0000000000000000000000000000000000000000..c7bb47784bb336e48f01b36eecf10374ce2c111b
--- /dev/null
+++ b/resource/ssh.conf
@@ -0,0 +1,8 @@
+2560
+1440
+3160
+2640
+0
+600
+600
+600
diff --git a/resource/ssh.texture b/resource/ssh.texture
new file mode 100644
index 0000000000000000000000000000000000000000..a351f650a098d557a5c03476ad955eddf11cb676
Binary files /dev/null and b/resource/ssh.texture differ
diff --git a/src/gui_handler.cpp b/src/gui_handler.cpp
index dbdf5e21d9abea8c0498d2579165f370e75950ee..dd2d2ac294c6e0f8629a9cf2f7dd81267de3aeeb 100644
--- a/src/gui_handler.cpp
+++ b/src/gui_handler.cpp
@@ -13,7 +13,7 @@
 #define GL_GPU_MEM_INFO_TOTAL_AVAILABLE_MEM_NVX 0x9048
 #define GL_GPU_MEM_INFO_CURRENT_AVAILABLE_MEM_NVX 0x9049
 
-void GuiHandler::init(Toolbox& tb, const std::string path)
+void GuiHandler::init(Toolbox& tb, const std::string path_img, const std::string path_ttf)
 {
 	tb.gui_pos = gui_pos_;
 
@@ -25,7 +25,15 @@ void GuiHandler::init(Toolbox& tb, const std::string path)
 	const char* glsl_version = "#version 330";
 	ImGui_ImplOpenGL3_Init(glsl_version);
 
-	load_button_textures_(path);
+	load_button_textures_(path_img);
+
+	/*Load font*/
+	std::string fullpath_font = path_ttf + "Cousine-Regular.ttf";
+	font_ = io_.Fonts->AddFontFromFileTTF(fullpath_font.c_str(), 20.0f);
+	if (font_ != NULL) {
+		std::cout << "Font loaded" << std::endl;
+	}
+	io_.Fonts->Build();
 }
 
 void GuiHandler::update(Toolbox& tb) {
@@ -336,6 +344,26 @@ void GuiHandler::draw_gui_(Toolbox& tb) {
 	ImGui::Dummy(ImVec2(70, 0));
 	ImGui::SameLine();
 	ImGui::Text("Doppelspalt");
+	if (ImGui::ImageButton((void*)(btex_ssh_off_), ImVec2(140, 140))) {
+		tb.mailbox.push_back({ WAVEMESSAGE::RESET_DAMPING });
+		tb.mailbox.push_back({ WAVEMESSAGE::RESET_WAVE });
+		tb.mailbox.push_back({ DRAWERMESSAGE::CLEAR });
+		tb.mailbox.push_back({ BLOCKCHAINMESSAGE::PATTERN_SSH });
+	}
+	ImGui::SameLine();
+	if (ImGui::ImageButton((void*)(btex_fresnel_off_), ImVec2(140, 140))) {
+		tb.mailbox.push_back({ WAVEMESSAGE::RESET_DAMPING });
+		tb.mailbox.push_back({ WAVEMESSAGE::RESET_WAVE });
+		tb.mailbox.push_back({ DRAWERMESSAGE::CLEAR });
+		tb.mailbox.push_back({ BLOCKCHAINMESSAGE::PATTERN_FRESNEL });
+	}
+	ImGui::Dummy(ImVec2(40, 0));
+	ImGui::SameLine();
+	ImGui::Text("SSH");
+	ImGui::SameLine();
+	ImGui::Dummy(ImVec2(70, 0));
+	ImGui::SameLine();
+	ImGui::Text("Fresnel");
 	/*
 	if (ImGui::Button("LATTICE", ImVec2(140, 140))) {
 		tb.mailbox.push_back({ BLOCKCHAINMESSAGE::PATTERN_LATTICE });
@@ -525,6 +553,16 @@ void GuiHandler::load_button_textures_(const std::string path) {
 	load_image_to_texture_(file, btex_waveguide_off_);
 	file = path + "waveguide_on.jpg";
 	load_image_to_texture_(file, btex_waveguide_on_);
+	/*SSH Textures*/
+	file = path + "ssh_off.jpg";
+	load_image_to_texture_(file, btex_ssh_off_);
+	file = path + "ssh_on.jpg";
+	load_image_to_texture_(file, btex_ssh_on_);
+	/*Fresnel Textures*/
+	file = path + "fresnel_off.jpg";
+	load_image_to_texture_(file, btex_fresnel_off_);
+	file = path + "fresnel_on.jpg";
+	load_image_to_texture_(file, btex_fresnel_on_);
 }
 
 void GuiHandler::load_image_to_texture_(const std::string file, GLuint& texture) {
diff --git a/src/main_testing.cpp b/src/main_testing.cpp
index 8001b1ca09483dbb0ba28e74d314b050cfcd8cf3..2115281cbd711a4927d385bd4dc80ec00b036911 100644
--- a/src/main_testing.cpp
+++ b/src/main_testing.cpp
@@ -23,6 +23,7 @@ int main(int argc, char** argv) {
 	std::string top_path = "C:\\Users\\engel\\VS_Projects\\FocusTerra\\framebuffer-testing\\";
 	std::string rsc_path = top_path + "resource\\";
 	std::string img_path = rsc_path + "images\\";
+	std::string font_path = top_path + "include\\imgui\\misc\\fonts\\";
 	std::string shd_path = top_path + "shaders\\";
 	int tex_offscreen_left = 0;
 	int tex_offscreen_right = 450;
@@ -38,8 +39,8 @@ int main(int argc, char** argv) {
 	waves.generate_and_transfer_textures(tb);
 	InputHandler ioHandler;
 	GuiHandler guiHandler(0.15f);
-	guiHandler.init(tb, img_path);
-	SlimBlockchainHandler bch(tb, MSTATE::PLACE);
+	guiHandler.init(tb, img_path, font_path);
+	SlimBlockchainHandler bch(tb, MSTATE::PLACE, rsc_path + "damp_exp", rsc_path + "damp_exp");
 	DrawingHandler drah(tb);
 	
 	/*Scale the gui*/
diff --git a/src/slim_blockchain_handler.cpp b/src/slim_blockchain_handler.cpp
index 4bd0583cea55870a755b552267b7ac3f07df7a27..45283639c1103c3dfa6fd8a9f49e8e0c7cc07856 100644
--- a/src/slim_blockchain_handler.cpp
+++ b/src/slim_blockchain_handler.cpp
@@ -49,6 +49,18 @@ void SlimBlockchainHandler::update(Toolbox& tb) {
 				m.handled = true;
 				skip_events = true;
 				break;
+			case BLOCKCHAINMESSAGE::PATTERN_SSH:
+				clear_blocks_();
+				queue_ssh_(tb);
+				m.handled = true;
+				skip_events = true;
+				break;
+			case BLOCKCHAINMESSAGE::PATTERN_FRESNEL:
+				clear_blocks_();
+				queue_fresnel_(tb);
+				m.handled = true;
+				skip_events = true;
+				break;
 			}
 		}
 	}
@@ -132,7 +144,7 @@ void SlimBlockchainHandler::clear_blocks_() {
 
 void SlimBlockchainHandler::update_blocks_(const Toolbox& tb, bool reload_all) {
 	find_dynamic_duplicates_();
-	if (drawlist_dynamic_.size() != 0 || drawlist_static_.size() != 0 || eraselist_dynamic_.size() != 0) {
+	if (drawlist_dynamic_.size() != 0 || drawlist_static_.size() != 0 || eraselist_dynamic_.size() != 0 || queued_texture_ != 0) {
 		glBindVertexArray(vao_);
 		glBindBuffer(GL_ARRAY_BUFFER, vbo_);
 		glViewport(0, 0, tb.texture_w, tb.texture_h);
@@ -197,6 +209,18 @@ void SlimBlockchainHandler::update_blocks_(const Toolbox& tb, bool reload_all) {
 		}
 		drawlist_dynamic_.clear();
 	}
+	/*Draw textured structures*/
+	if (queued_texture_ != 0) {
+		glBindFramebuffer(GL_FRAMEBUFFER, fbo_static_);
+		glBindTexture(GL_TEXTURE_2D, queued_texture_);
+		xywhs_to_vertices_(tb, { false }, { {0, 0, tb.texture_w, tb.texture_h} }, vertices);
+		if (vertices.size() != 0) {
+			glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(float), vertices.data(), GL_DYNAMIC_DRAW);
+			shader_drawblocks_.setFloat("color_multiplier", 1.f);
+			glDrawArrays(GL_TRIANGLES, 0, 6);
+		}
+		queued_texture_ = 0;
+	}
 	/*Drawing finished, reset OpenGL state*/
 	glBindVertexArray(0);
 	glBindBuffer(GL_ARRAY_BUFFER, 0);
@@ -278,6 +302,14 @@ void SlimBlockchainHandler::queue_waveguide_(Toolbox& tb) {
 	}
 }
 
+void SlimBlockchainHandler::queue_ssh_(Toolbox& tb) {
+	queued_texture_ = texture_ssh_;
+}
+
+void SlimBlockchainHandler::queue_fresnel_(Toolbox& tb) {
+	queued_texture_ = texture_ssh_;
+}
+
 void SlimBlockchainHandler::xywhs_to_vertices_(const Toolbox& tb, const std::vector<bool>& duplicates,  const std::vector<glm::ivec4>& xywhs, std::vector<float>& vertices) const {
 	float texwidth = tb.texture_w;
 	float texheight = tb.texture_h;