diff --git a/css/theia-sprotty.css b/css/theia-sprotty.css
index c54ea72..75ffb0a 100644
--- a/css/theia-sprotty.css
+++ b/css/theia-sprotty.css
@@ -81,6 +81,11 @@ svg:focus {
     padding-left: 10px;
 }
 
+.sprotty-status-message.fatal {
+    visibility: visible;
+    padding-left: 10px;
+}
+
 .sprotty-status:hover .sprotty-status-message {
     visibility: visible;
 }
diff --git a/src/sprotty/languageserver/ls-theia-sprotty-connector.ts b/src/sprotty/languageserver/ls-theia-sprotty-connector.ts
index 9d7a790..b51a1ac 100644
--- a/src/sprotty/languageserver/ls-theia-sprotty-connector.ts
+++ b/src/sprotty/languageserver/ls-theia-sprotty-connector.ts
@@ -68,8 +68,10 @@ export class LSTheiaSprottyConnector implements TheiaSprottyConnector, TheiaSpro
         this.fileSaver.save(uri, action);
     }
 
-    showStatus(widgetId: string, status: ServerStatusAction): void {
-        const widget = this.widgetManager.getWidgets(this.diagramManager.id).find(w => w.id === widgetId);
+    showStatus(clientId: string, status: ServerStatusAction): void {
+        const widget = this.widgetManager
+            .getWidgets(this.diagramManager.id)
+            .find(w => w instanceof DiagramWidget && w.clientId === clientId);
         if (widget instanceof DiagramWidget)
             widget.setStatus(status);
     }
diff --git a/src/sprotty/theia-sprotty-connector.ts b/src/sprotty/theia-sprotty-connector.ts
index 64a06e6..9f24c80 100644
--- a/src/sprotty/theia-sprotty-connector.ts
+++ b/src/sprotty/theia-sprotty-connector.ts
@@ -44,7 +44,7 @@ export interface TheiaSprottyConnector {
     connect(diagramServer: TheiaDiagramServer): void
     disconnect(diagramServer: TheiaDiagramServer): void
     save(uri: string, action: ExportSvgAction): void
-    showStatus(widgetId: string, status: ServerStatusAction): void
+    showStatus(clientId: string, status: ServerStatusAction): void
     sendMessage(message: ActionMessage): void
     onMessageReceived(message: ActionMessage): void
 }
diff --git a/src/theia/diagram-manager.ts b/src/theia/diagram-manager.ts
index 6476fac..5bcb4c9 100644
--- a/src/theia/diagram-manager.ts
+++ b/src/theia/diagram-manager.ts
@@ -64,10 +64,10 @@ export abstract class DiagramManager extends WidgetOpenHandler<DiagramWidget> im
             await widget.getSvgElement();
             promises.push(this.onActive(widget));
             promises.push(this.onReveal(widget));
-            this.shell.activateWidget(widget.id);
+            this.shell.activateWidget(widget.widgetId);
         } else if (op.mode === 'reveal') {
             promises.push(this.onReveal(widget));
-            this.shell.revealWidget(widget.id);
+            this.shell.revealWidget(widget.widgetId);
         }
         await Promise.all(promises);
     }
@@ -93,8 +93,8 @@ export abstract class DiagramManager extends WidgetOpenHandler<DiagramWidget> im
         if (DiagramWidgetOptions.is(options)) {
             const clientId = this.createClientId();
             const config = this.diagramConfigurationRegistry.get(options.diagramType);
-            const diContainer = config.createContainer(clientId + '_sprotty');
-            const diagramWidget = new DiagramWidget(options, clientId, diContainer, this.diagramConnector);
+            const diContainer = config.createContainer(clientId);
+            const diagramWidget = new DiagramWidget(options, clientId + '_widget', diContainer, this.diagramConnector);
             return diagramWidget;
         }
         throw Error('DiagramWidgetFactory needs DiagramWidgetOptions but got ' + JSON.stringify(options));
diff --git a/src/theia/diagram-widget.ts b/src/theia/diagram-widget.ts
index 3ea6a8f..d3670e6 100644
--- a/src/theia/diagram-widget.ts
+++ b/src/theia/diagram-widget.ts
@@ -49,6 +49,8 @@ export class DiagramWidget extends BaseWidget implements StatefulWidget {
     protected options: DiagramWidgetOptions;
     protected _actionDispatcher: IActionDispatcher;
 
+    protected _modelSource: ModelSource;
+
     get uri(): URI {
         return new URI(this.options.uri);
     }
@@ -61,7 +63,22 @@ export class DiagramWidget extends BaseWidget implements StatefulWidget {
         return this.diContainer.get(TYPES.ViewerOptions);
     }
 
-    constructor(options: DiagramWidgetOptions, readonly id: string, readonly diContainer: Container, readonly connector?: TheiaSprottyConnector) {
+    get modelSource(): ModelSource {
+        return this._modelSource;
+    }
+
+    get clientId(): string {
+        if (this._modelSource instanceof DiagramServer)
+            return this._modelSource.clientId;
+        else
+            return this.widgetId;
+    }
+
+    get id(): string {
+        return this.widgetId;
+    }
+
+    constructor(options: DiagramWidgetOptions, readonly widgetId: string, readonly diContainer: Container, readonly connector?: TheiaSprottyConnector) {
         super();
         this.options = options;
         this.title.closable = true;
@@ -95,8 +112,7 @@ export class DiagramWidget extends BaseWidget implements StatefulWidget {
 
     protected initializeSprotty() {
         const modelSource = this.diContainer.get<ModelSource>(TYPES.ModelSource);
-        if (modelSource instanceof DiagramServer)
-            modelSource.clientId = this.id;
+        this._modelSource = modelSource;
         if (modelSource instanceof TheiaDiagramServer && this.connector)
             this.connector.connect(modelSource);
         this.disposed.connect(() => {