diff --git a/lib/aethyr/core/render/display.rb b/lib/aethyr/core/render/display.rb
index bd3f9e4ddca8e916f9f12b9b39f81ef4fc18882a..407a6d86dbf6f1775db1935a70f76b1cc08c5fa0 100644
--- a/lib/aethyr/core/render/display.rb
+++ b/lib/aethyr/core/render/display.rb
@@ -299,7 +299,9 @@ CONF
       @windows[:input].clear
       @windows[:input].window_text.mvaddstr(y,x,string) if echo?
       @windows[:input].window_text.move(y,x+cursor_pos) if echo?
-      update
+      #update
+      @windows[:input].update
+      Ncurses.doupdate();
 
       next if not @scanner.process_iac
       ch = @windows[:input].window_text.getch
@@ -372,15 +374,16 @@ CONF
           cursor_pos = [0, cursor_pos-1].max
         when Ncurses::KEY_RIGHT
           cursor_pos = [max_len, cursor_pos + 1, string.length].min
-          # similar, implement yourself !
-  #      when Ncurses::KEY_ENTER, ?\n, ?\r
-  #        return string, cursor_pos, ch # Which return key has been used?
+        when Ncurses::KEY_UP
+          @windows[:main].buffer_pos += 1
+        when Ncurses::KEY_DOWN
+          @windows[:main].buffer_pos -= 1
         when 13 # return
           @windows[:input].clear
           self.selected = :input
           @windows[:main].send("≫≫≫≫≫ #{string}") if echo?
           @windows[:main].buffer_pos = 0
-          update
+          @windows[:main].update
           return string#, cursor_pos, ch # Which return key has been used?
         #when Ncurses::KEY_BACKSPACE
         when 127, "\b".ord, Ncurses::KEY_BACKSPACE  # backspace
diff --git a/lib/aethyr/core/render/window.rb b/lib/aethyr/core/render/window.rb
index 0bbaced2d7e0a1d74f9d97140f83ea5edceaabb8..8e7933c8efa80197fffbd6e517a489e85dc1dd2b 100644
--- a/lib/aethyr/core/render/window.rb
+++ b/lib/aethyr/core/render/window.rb
@@ -110,11 +110,13 @@ class Window
     else
       render(message, add_newline: add_newline)
     end
+    update
   end
 
   def buffer_pos= new_pos
     @buffer_pos = new_pos if new_pos <= @buffer_size && new_pos <= @buffer_lines.length - @text_height && new_pos >= 0
     render_buffer
+    update
   end
 
   def self.split_message(message, cols = @text_width)
@@ -249,8 +251,6 @@ class Window
     if @use_color
       regular_format.revert(@window_text)
     end
-
-    update
   end
 
   def color_encode(code)