diff --git a/lib/aethyr/core/connection/server.rb b/lib/aethyr/core/connection/server.rb
index e0e24514080adabd42669725b49b2f524b5a307d..bb6db5390a9d53295073fe2c55614e908999390e 100644
--- a/lib/aethyr/core/connection/server.rb
+++ b/lib/aethyr/core/connection/server.rb
@@ -58,7 +58,6 @@ module Aethyr
 
         players = Set.new()
         loop do
-          did_something = false
           # handle the listener
           #ready, _, _ = IO.select([listener])
           socket, addr_info = listener.accept_nonblock(exception: false)
@@ -75,6 +74,18 @@ module Aethyr
             end
           end
 
+          # TODO this is a hack to fix a bug from calling resizeterm
+          #check if global refresh is needed
+          need_refresh = false
+          players.each do |player|
+            need_refresh = true if player.display.global_refresh
+          end
+          if need_refresh
+            players.each do |player|
+              player.display.layout
+            end
+          end
+
         end
 
         clean_up_children
diff --git a/lib/aethyr/core/render/display.rb b/lib/aethyr/core/render/display.rb
index fe0e94440a347939cad9e046d2f93a1f6f713fb9..fdf1508e3aee33dedc9f1c9c014323761073b7c4 100644
--- a/lib/aethyr/core/render/display.rb
+++ b/lib/aethyr/core/render/display.rb
@@ -83,6 +83,7 @@ class Display
   end
 
   def layout(layout: @layout_type)
+    set_term
     puts "layout #{layout} set for resolution #{@width}x#{@height}"
     @layout_type = layout
     if @layout_type == :wide && @height >= 60 && @width >= 300
@@ -128,9 +129,16 @@ class Display
     @width = resolution[0]
     @height = resolution[1]
     Ncurses.resizeterm(@height, @width)
+    @global_refresh = true
     layout
   end
 
+  def global_refresh
+    retval = @global_refresh
+    @global_refresh = false
+    return retval
+  end
+
   def echo?
     @echo
   end