diff --git a/chat/room.go b/chat/room.go
index 71e3171..4fb56dd 100644
--- a/chat/room.go
+++ b/chat/room.go
@@ -90,12 +90,7 @@ func (r *Room) HandleMsg(m message.Message) {
 		user := m.To()
 		user.Send(m)
 	default:
-		fromMsg, skip := m.(message.MessageFrom)
-		var skipUser *message.User
-		if skip {
-			skipUser = fromMsg.From()
-		}
-
+		fromMsg, _ := m.(message.MessageFrom)
 		r.history.Add(m)
 		r.Members.Each(func(_ string, item set.Item) (err error) {
 			user := item.Value().(*Member).User
@@ -105,10 +100,6 @@ func (r *Room) HandleMsg(m message.Message) {
 				return
 			}
 
-			if skip && skipUser == user {
-				// Skip self
-				return
-			}
 			if _, ok := m.(*message.AnnounceMsg); ok {
 				if user.Config().Quiet {
 					// Skip announcements
diff --git a/host.go b/host.go
index 068b969..9db1479 100644
--- a/host.go
+++ b/host.go
@@ -175,6 +175,15 @@ func (h *Host) Connect(term *sshd.Terminal) {
 			term.SetPrompt(GetPrompt(user))
 			user.SetHighlight(user.Name())
 		}
+
+		// Gross hack to override line echo in golang.org/x/crypto/ssh/terminal
+		term.Write([]byte{
+			27,       // keyEscape
+			'[', 'A', // Up
+			27,            // keyEscape
+			'[', '2', 'K', // Clear line
+		})
+		// May the gods have mercy on our souls.
 	}
 
 	err = h.Leave(user)