diff --git a/src/viewmodels/ChatterboxViewModel.ts b/src/viewmodels/ChatterboxViewModel.ts
index 9a786988b67bb06c015cee8fcd6a0ce8c6802db2..a31cc785831aa8f6d0bdf9e7c516cbc6dad3bc59 100644
--- a/src/viewmodels/ChatterboxViewModel.ts
+++ b/src/viewmodels/ChatterboxViewModel.ts
@@ -1,14 +1,5 @@
-import { RoomViewModel, ViewModel, RoomStatus, tileClassForEntry} from "hydrogen-view-sdk";
-
-function createCustomTileClassForEntry(ownUserId: string) {
-    return function customTileClassForEntry(entry) {
-        if (entry.content?.membership === "join" && entry.sender !== ownUserId ||
-            entry.eventType !== "m.room.member") {
-            return tileClassForEntry(entry);
-        }
-        return undefined;
-    }
-}
+import { RoomViewModel, ViewModel, RoomStatus } from "hydrogen-view-sdk";
+import { createCustomTileClassForEntry } from "./tiles";
 
 export class ChatterboxViewModel extends ViewModel {
     private _roomViewModel?: typeof RoomViewModel;
diff --git a/src/viewmodels/tiles.ts b/src/viewmodels/tiles.ts
new file mode 100644
index 0000000000000000000000000000000000000000..aad096ee8d7ba60171ae341f6856cb7bd54bfc14
--- /dev/null
+++ b/src/viewmodels/tiles.ts
@@ -0,0 +1,77 @@
+import { TextTile, ImageTile, VideoTile, FileTile, LocationTile, RedactedTile, tileClassForEntry } from "hydrogen-view-sdk";
+
+class ChatterboxTextTile extends TextTile {
+    get displayName() {
+        return this.isOwn? "me" : super.displayName;
+    }
+}
+
+class ChatterboxImageTile extends ImageTile {
+    get displayName() {
+        return this.isOwn? "me" : super.displayName;
+    }
+}
+
+class ChatterboxVideoTile extends VideoTile {
+    get displayName() {
+        return this.isOwn? "me" : super.displayName;
+    }
+}
+
+class ChatterboxFileTile extends FileTile {
+    get displayName() {
+        return this.isOwn? "me" : super.displayName;
+    }
+}
+
+class ChatterboxLocationTile extends LocationTile {
+    get displayName() {
+        return this.isOwn? "me" : super.displayName;
+    }
+}
+
+class ChatterboxRedactedTile extends RedactedTile {
+    get displayName() {
+        return this.isOwn? "me" : super.displayName;
+    }
+}
+
+export function createCustomTileClassForEntry(ownUserId: string) {
+    return function customTileClassForEntry(entry) {
+        switch (entry.eventType) {
+            case "m.room.message":
+                if (entry.isRedacted) {
+                    return ChatterboxRedactedTile;
+                }
+                const content = entry.content;
+                const msgtype = content && content.msgtype;
+                switch (msgtype) {
+                    case "m.text":
+                    case "m.notice":
+                    case "m.emote":
+                        return ChatterboxTextTile;
+                    case "m.image":
+                        return ChatterboxImageTile;
+                    case "m.video":
+                        return ChatterboxVideoTile;
+                    case "m.file":
+                        return ChatterboxFileTile;
+                    case "m.location":
+                        return ChatterboxLocationTile;
+                    default:
+                        // unknown msgtype not rendered
+                        return undefined;
+                }
+            case "m.room.member":
+                if (entry.content?.membership === "join" && entry.sender !== ownUserId) {
+                    return tileClassForEntry(entry);
+                }
+                else {
+                    return undefined;
+                }
+            default:
+                return tileClassForEntry(entry);
+
+        }
+    }
+}