diff --git a/package.json b/package.json
index 765cbbb2bcd5214d68cc4720629f58c92c61a0b8..a521c8de05a794369102e2be7a2f1cd8bdb914fd 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "medsurf-draw",
-  "version": "1.0.235",
+  "version": "1.0.237",
   "description": "Draw annotations on jpg/zoomify images, based on PIXI.js",
   "keywords": [
     "draw",
diff --git a/src/app/index.ts b/src/app/index.ts
index 16a43c9a9116cb2149308a5a775478629ac3707d..f39749df4a7e16f34568b8a9fa00574c67241fe0 100644
--- a/src/app/index.ts
+++ b/src/app/index.ts
@@ -572,7 +572,7 @@ async function setupImageObjects() {
             y: 100 / image.dimensions.width,
         },
         isSelftest: true,
-        selftestItems: ['rectanglePoint', 'textPoint'],
+        selftestItems: ['rectanglePoint', 'line1', 'textPoint'],
         primitives: []
     });
     image.addChild(arrowPoint);
diff --git a/src/lib/elements/positionings/PositionPoint.ts b/src/lib/elements/positionings/PositionPoint.ts
index ba4e81f296ff2250e26e76161ba9814d057f977d..a9125b33b352024be85654784eb18ff7618ac1df 100644
--- a/src/lib/elements/positionings/PositionPoint.ts
+++ b/src/lib/elements/positionings/PositionPoint.ts
@@ -1543,65 +1543,55 @@ export class PositionPoint extends BaseElementContainer<Models.PositionPoint, Ba
     public onSelftest(): void {
         // Set default mode for image children
         this.getImage().getImageObjects()
-            .filter((imageObject) => imageObject !== this)
             .forEach((imageObject) => {
-                if (this.model.selftestItems) {
-                    if (this.model.selftestItems.indexOf(imageObject.name as string) > -1) {
-                        imageObject.showItem();
-                        if (imageObject instanceof MedsurfDraw.PositionPoint) {
-                            imageObject.children.forEach((child) => {
-                               if (child instanceof MedsurfDraw.ArrowPrimitive) {
-                                   child.showItem();
-                                   // @ts-ignore
-                                   child._arrowElement.alpha = 1;
-                                   // @ts-ignore
-                                   child._arrowElement.showItem();
-                                   // @ts-ignore
-                                   child._selftestElement.alpha = 0;
-                               } else if (child instanceof MedsurfDraw.BackgroundRectanglePrimitive) {
-                                   child.showItem();
-                                   // @ts-ignore
-                                   child._rectangleElement.alpha = 1;
-                                   // @ts-ignore
-                                   child._rectangleElement.showItem();
-                               } else if (child instanceof MedsurfDraw.EllipsePrimitive) {
-                                   child.showItem();
-                                   // @ts-ignore
-                                   child._ellipseElement.alpha = 1;
-                                   // @ts-ignore
-                                   child._ellipseElement.showItem();
-                                   // @ts-ignore
-                                   child._selftestElement.alpha = 0;
-                               } else if (child instanceof MedsurfDraw.RectanglePrimitive) {
-                                   child.showItem();
-                                   // @ts-ignore
-                                   child._rectangleElement.alpha = 1;
-                                   // @ts-ignore
-                                   child._rectangleElement.showItem();
-                                   // @ts-ignore
-                                   child._selftestElement.alpha = 0;
-                               } else if (child instanceof MedsurfDraw.TextPrimitive) {
-                                   child.showItem();
-                                   // @ts-ignore
-                                   child._textElement.alpha = 1;
-                                   // @ts-ignore
-                                   child._textElement.showItem();
-                                   // @ts-ignore
-                                   child._selftestElement.alpha = 0;
-                               }
-                            });
-                        }
-                    } else if (imageObject instanceof MedsurfDraw.LegendCollection) {
-                        const legendRows = imageObject.legendColumns.map(lc => lc.legendRows)
-                            .reduce((cur, acc: any) => [...cur, ...acc], [])
-                            .map((lr) => { return {name: lr.model.id, element: lr}; });
-                        for (let legendRow of legendRows) {
-                            if (this.model.selftestItems.indexOf(legendRow.name) > -1) {
-                                legendRow.element.showItem();
+                if (imageObject === this
+                    || (this.model.selftestItems
+                        && this.model.selftestItems.indexOf(imageObject.name as string) > -1)) {
+                    if (imageObject instanceof MedsurfDraw.PositionPoint) {
+                        imageObject.children.forEach((child) => {
+                            if (child instanceof MedsurfDraw.BackgroundRectanglePrimitive) {
+                                child.showItem();
+                                // @ts-ignore
+                                child._rectangleElement.showItem();
                             }
+                            else if (child instanceof MedsurfDraw.ArrowPrimitive) {
+                                child.showItem();
+                                // @ts-ignore
+                                child._arrowElement.showItem();
+                                // @ts-ignore
+                                child._selftestElement.hideItem();
+                            } else if (child instanceof MedsurfDraw.EllipsePrimitive) {
+                                child.showItem();
+                                // @ts-ignore
+                                child._ellipseElement.showItem();
+                                // @ts-ignore
+                                child._selftestElement.hideItem();
+                            } else if (child instanceof MedsurfDraw.RectanglePrimitive) {
+                                child.showItem();
+                                // @ts-ignore
+                                child._rectangleElement.showItem();
+                                // @ts-ignore
+                                child._selftestElement.hideItem();
+                            } else if (child instanceof MedsurfDraw.TextPrimitive) {
+                                child.showItem();
+                                // @ts-ignore
+                                child._textElement.showItem();
+                                // @ts-ignore
+                                child._selftestElement.hideItem();
+                            }
+                        });
+                    }
+                    imageObject.showItem();
+                } else if (imageObject instanceof MedsurfDraw.LegendCollection && this.model.selftestItems) {
+                    const legendRows = imageObject.legendColumns.map(lc => lc.legendRows)
+                        .reduce((cur, acc: any) => [...cur, ...acc], [])
+                        .map((lr) => {
+                            return {name: lr.model.id, element: lr};
+                        });
+                    for (let legendRow of legendRows) {
+                        if (this.model.selftestItems.indexOf(legendRow.name) > -1) {
+                            legendRow.element.showItem();
                         }
-                    } else {
-                        imageObject.hideItem();
                     }
                 } else {
                     imageObject.hideItem();
diff --git a/src/lib/elements/primitives/ArrowPrimitive.ts b/src/lib/elements/primitives/ArrowPrimitive.ts
index bef58eb95ce72cd5429fb5225e71431b9f482b6d..f0575b13b9e93363456d1b41820324462b2841d5 100644
--- a/src/lib/elements/primitives/ArrowPrimitive.ts
+++ b/src/lib/elements/primitives/ArrowPrimitive.ts
@@ -542,6 +542,9 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive,
      * @private
      */
     protected _modeDefault(): void {
+        // Setup
+        this._selftestSelected = false;
+
         if (this.model.isStatic) {
             // Show item
             this.showItem();
@@ -563,6 +566,9 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive,
      * @private
      */
     protected _modeMarker(): void {
+        // Setup
+        this._selftestSelected = false;
+
         // Show item
         this.showItem();
     }
@@ -596,16 +602,17 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive,
 
             // Show item
             this.showItem();
+
+            // Draw
+            this.emit("debounceDraw");
         } else if (positionPoint.model.isSelftest) {
             // Setup
             this.interactive = true;
             this.cursor = "select";
 
             // -- Arrow element
-            this._arrowElement.alpha = 0;
             this._arrowElement.hideItem();
             // -- Selftest element
-            this._selftestElement.alpha = 1;
             this._selftestElement.showItem()
 
             // Events
@@ -614,6 +621,12 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive,
             this.on("pointerout", this.selectInteraction.onOut, this.selectInteraction);
             this.on("mousedown", this.selectInteraction.onPointerDown, this.selectInteraction);
             this.on("mouseup", this.selectInteraction.onSelftest, this.selectInteraction);
+
+            // Show item
+            this.showItem();
+
+            // Draw
+            this.emit("debounceDraw");
         } else {
             // Hide Item
             this.hideItem();
@@ -630,7 +643,6 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive,
 
         // Elements
         // -- Arrow element
-        this._arrowElement.alpha = 1;
         this._arrowElement.showItem();
         // -- Selftest element
         this._selftestElement.hideItem();
@@ -649,6 +661,7 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive,
     protected _modeAuthor(): void {
         // Setup
         this.interactive = true;
+        this._selftestSelected = false;
 
         // Events
         this.on("pointerover", this.selectInteraction.onHover, this.selectInteraction);
diff --git a/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts b/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts
index e6ee67ecb3140fd585981b0349e01dffb5d6d01a..6089642ec44c41df5a5796398c3715fa4e843172 100644
--- a/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts
+++ b/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts
@@ -19,7 +19,6 @@ export class BackgroundRectanglePrimitive extends BaseElementContainer<Models.Ba
      * Members
      */
     protected _primitive: MedsurfDraw.PrimitiveObject | null;
-    protected _selftestSelected = false;
 
     /**
      * Interactions
@@ -602,7 +601,6 @@ export class BackgroundRectanglePrimitive extends BaseElementContainer<Models.Ba
 
         // Elements
         // -- Rectangle element
-        this._rectangleElement.alpha = 1;
         this._rectangleElement.showItem();
 
         // Events
diff --git a/src/lib/elements/primitives/EllipsePrimitive.ts b/src/lib/elements/primitives/EllipsePrimitive.ts
index ee3410501b20b42bf6f352ef1c8090d42ed5e54c..106e7983817f2012aefd27e9b6a89fffc0e9ef2e 100644
--- a/src/lib/elements/primitives/EllipsePrimitive.ts
+++ b/src/lib/elements/primitives/EllipsePrimitive.ts
@@ -510,6 +510,9 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti
      * @private
      */
     protected _modeDefault(): void {
+        // Setup
+        this._selftestSelected = false;
+
         if (this.model.isStatic) {
             // Show item
             this.showItem();
@@ -531,6 +534,9 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti
      * @private
      */
     protected _modeMarker(): void {
+        // Setup
+        this._selftestSelected = false;
+
         // Show item
         this.showItem();
     }
@@ -564,16 +570,17 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti
 
             // Show item
             this.showItem();
+
+            // Draw
+            this.emit("debounceDraw");
         } else if (positionPoint.model.isSelftest) {
             // Setup
             this.interactive = true;
             this.cursor = "select";
 
             // -- Ellipse element
-            this._ellipseElement.alpha = 0;
             this._ellipseElement.hideItem();
             // -- Selftest element
-            this._selftestElement.alpha = 1;
             this._selftestElement.showItem()
 
             // Events
@@ -582,6 +589,12 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti
             this.on("pointerout", this.selectInteraction.onOut, this.selectInteraction);
             this.on("mousedown", this.selectInteraction.onPointerDown, this.selectInteraction);
             this.on("mouseup", this.selectInteraction.onSelftest, this.selectInteraction);
+
+            // Show item
+            this.showItem();
+
+            // Draw
+            this.emit("debounceDraw");
         } else {
             // Hide Item
             this.hideItem();
@@ -598,7 +611,6 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti
 
         // Elements
         // -- Ellipse element
-        this._ellipseElement.alpha = 1;
         this._ellipseElement.showItem();
         // -- Selftest element
         this._selftestElement.hideItem();
@@ -617,6 +629,7 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti
     protected _modeAuthor(): void {
         // Setup
         this.interactive = true;
+        this._selftestSelected = false;
 
         // Events
         this.on("pointerover", this.selectInteraction.onHover, this.selectInteraction);
diff --git a/src/lib/elements/primitives/RectanglePrimitive.ts b/src/lib/elements/primitives/RectanglePrimitive.ts
index 4cb59e10eff343b47568317c351bb2ac7be4164b..52a89723008c3cc56e795bc08803cef6d56fb397 100644
--- a/src/lib/elements/primitives/RectanglePrimitive.ts
+++ b/src/lib/elements/primitives/RectanglePrimitive.ts
@@ -511,6 +511,9 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri
      * @private
      */
     protected _modeDefault(): void {
+        // Setup
+        this._selftestSelected = false;
+
         if (this.model.isStatic) {
             // Show item
             this.showItem();
@@ -532,6 +535,9 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri
      * @private
      */
     protected _modeMarker(): void {
+        // Setup
+        this._selftestSelected = false;
+
         // Show item
         this.showItem();
     }
@@ -565,16 +571,17 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri
 
             // Show item
             this.showItem();
+
+            // Draw
+            this.emit("debounceDraw");
         } else if (positionPoint.model.isSelftest) {
             // Setup
             this.interactive = true;
             this.cursor = "select";
 
             // -- Rectangle element
-            this._rectangleElement.alpha = 0;
             this._rectangleElement.hideItem();
             // -- Selftest element
-            this._selftestElement.alpha = 1;
             this._selftestElement.showItem();
 
             // Events
@@ -583,6 +590,12 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri
             this.on("pointerout", this.selectInteraction.onOut, this.selectInteraction);
             this.on("mousedown", this.selectInteraction.onPointerDown, this.selectInteraction);
             this.on("mouseup", this.selectInteraction.onSelftest, this.selectInteraction);
+
+            // Show item
+            this.showItem();
+
+            // Draw
+            this.emit("debounceDraw");
         } else {
             // Hide Item
             this.hideItem();
@@ -599,7 +612,6 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri
 
         // Elements
         // -- Rectangle element
-        this._rectangleElement.alpha = 1;
         this._rectangleElement.showItem();
         // -- Selftest element
         this._selftestElement.hideItem();
@@ -618,6 +630,7 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri
     protected _modeAuthor(): void {
         // Setup
         this.interactive = true;
+        this._selftestSelected = false;
 
         // Events
         this.on("pointerover", this.selectInteraction.onHover, this.selectInteraction);
diff --git a/src/lib/elements/primitives/TextPrimitive.ts b/src/lib/elements/primitives/TextPrimitive.ts
index ea2694a44600281f4862cd68a64e6c8dafd98ad4..61fcac92083f3baf24a04ed019af52e1d2427311 100644
--- a/src/lib/elements/primitives/TextPrimitive.ts
+++ b/src/lib/elements/primitives/TextPrimitive.ts
@@ -559,6 +559,9 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba
      * @private
      */
     protected _modeDefault(): void {
+        // Setup
+        this._selftestSelected = false;
+
         // Elements
         // -- Text element
         this._textElement.onImageZoom();
@@ -586,6 +589,9 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba
      * @private
      */
     protected _modeMarker(): void {
+        // Setup
+        this._selftestSelected = false;
+
         // Show item
         this.showItem();
     }
@@ -619,16 +625,17 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba
 
             // Show item
             this.showItem();
+
+            // Draw
+            this.emit("debounceDraw");
         } else if (positionPoint.model.isSelftest) {
             // Setup
             this.interactive = true;
             this.cursor = "select";
 
             // -- Text element
-            this._textElement.alpha = 0;
             this._textElement.hideItem();
             // -- Selftest element
-            this._selftestElement.alpha = 1;
             this._selftestElement.showItem();
 
             // Events
@@ -637,6 +644,12 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba
             this.on("pointerout", this.selectInteraction.onOut, this.selectInteraction);
             this.on("mousedown", this.selectInteraction.onPointerDown, this.selectInteraction);
             this.on("mouseup", this.selectInteraction.onSelftest, this.selectInteraction);
+
+            // Show item
+            this.showItem();
+
+            // Draw
+            this.emit("debounceDraw");
         } else {
             // Hide Item
             this.hideItem();
@@ -653,7 +666,6 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba
 
         // Elements
         // -- Text element
-        this._textElement.alpha = 1;
         this._textElement.showItem();
         // -- Selftest element
         this._selftestElement.hideItem();
@@ -672,6 +684,7 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba
     protected _modeAuthor(): void {
         // Setup
         this.interactive = true;
+        this._selftestSelected = false;
 
         // Events
         this.on("pointerover", this.selectInteraction.onHover, this.selectInteraction);