diff --git a/lib/aethyr/core/render/display.rb b/lib/aethyr/core/render/display.rb
index 3b0884733571e111b3c2bc09533fbfccb5520291..fb61c1b48520e6b54f7e78a2de1785073bd3cd8b 100644
--- a/lib/aethyr/core/render/display.rb
+++ b/lib/aethyr/core/render/display.rb
@@ -217,26 +217,52 @@ class Display
   def word_wrap(line, cols = @window_main_width)
     lines = []
     new_line = ""
-    new_length = 0;
+    new_line_length = 0
+    next_line = ""
+    next_line_length = 0
     inside_tag = false
     line.each_char do |c|
-      if c == "<"
-        inside_tag = true
-      elsif c == ">"
-        inside_tag = false
-      elsif inside_tag == false
-        new_length += 1
-      end
+      if c =~ /\S/
+        next_line += c
+        if c == "<"
+          inside_tag = true
+        elsif c == ">"
+          inside_tag = false
+        elsif inside_tag == false
+          next_line_length += 1
+        end
 
-      if new_length > cols
-        lines << new_line
-        new_line = ""
-        new_length = 0
+        if next_line_length + new_line_length >= cols
+          if new_line_length == 0
+            lines << next_line
+            next_line = ""
+            next_line_length = 0
+          else
+            lines << new_line
+            new_line = ""
+            new_line_length = 0
+          end
+        end
+      elsif next_line.length == 0
+        new_line += c
+        new_line_length += 1 unless inside_tag
+      else
+        if next_line_length + new_line_length >= cols
+          lines << (new_line + next_line + c)
+          new_line = ""
+          new_line_length = 0
+          next_line = ""
+          next_line_length = 0
+        else
+          new_line += next_line + c
+          new_line_length += next_line_length
+          new_line_length += 1 unless inside_tag
+          next_line = ""
+          next_line_length = 0
+        end
       end
-
-      new_line += c
     end
-    lines << new_line if new_line.length > 0
+    lines << new_line + next_line if new_line.length > 0 || next_line.length > 0
     return lines
   end
 
@@ -515,7 +541,11 @@ CONF
         room = $manager.get_object(player.container)
         if not room.nil?
           look_text = room.look(player)
-          send(look_text, message_type: :look, internal_clear: true)
+          cleared = false
+          word_wrap(look_text, 79).each do |msg|
+            send(msg, message_type: :look, internal_clear: !cleared, add_newline: true)
+            cleared = true
+          end
         else
           send("Nothing to look at.", message_type: :look, internal_clear: true)
         end