diff --git a/projects/common/form.service.ts b/projects/common/form.service.ts
index 7a824b59a11db6a7ef1c975a36e6bf53868a5f8b..0bacb0b26ed8f65f24968c6624a83ca399fc4791 100644
--- a/projects/common/form.service.ts
+++ b/projects/common/form.service.ts
@@ -12,7 +12,6 @@ export class FormService {
   private _controlAdded = new Subject<FormControlElement>();
   private _groupAdded = new Subject<ChildFormGroup>();
   private _validatorsAdded = new Subject<FormControlValidators>();
-  private _presentedPageAdded = new Subject<number>();
 
   get controlAdded(): Observable<FormControlElement> {
     return this._controlAdded.asObservable();
@@ -26,10 +25,6 @@ export class FormService {
     return this._validatorsAdded.asObservable();
   }
 
-  get presentedPageAdded(): Observable<number> {
-    return this._presentedPageAdded.asObservable();
-  }
-
   get elementValueChanged(): Observable<ValueChangeElement> {
     return this._elementValueChanged.asObservable();
   }
@@ -49,8 +44,4 @@ export class FormService {
   setValidators(validators: FormControlValidators): void {
     this._validatorsAdded.next(validators);
   }
-
-  addPresentedPage(presentedPage: number): void {
-    this._presentedPageAdded.next(presentedPage);
-  }
 }
diff --git a/projects/player/src/app/components/element/element.component.ts b/projects/player/src/app/components/element/element.component.ts
index 4244eceffe215231de0a911ffa1f1632105ee298..9c6a9873b9ef9396adf45f903ee8c9e9dbd423d5 100644
--- a/projects/player/src/app/components/element/element.component.ts
+++ b/projects/player/src/app/components/element/element.component.ts
@@ -13,6 +13,7 @@ import { TextAreaComponent } from '../../../../../common/element-components/text
 import { FormService } from '../../../../../common/form.service';
 import { ValueChangeElement } from '../../../../../common/form';
 import { UnitStateElementCode } from '../../models/verona';
+import { UnitStateService } from '../../services/unit-state.service';
 
 @Component({
   selector: 'app-element',
@@ -25,7 +26,6 @@ export class ElementComponent implements OnInit {
   @Input() parentArrayIndex!: number;
   @Input() unitStateElementCodes!: UnitStateElementCode[];
 
-  private isInputElement!: boolean;
   private focussedInputSubscription!: Subscription;
   private ngUnsubscribe = new Subject<void>();
 
@@ -35,6 +35,7 @@ export class ElementComponent implements OnInit {
   constructor(private keyboardService: KeyboardService,
               private componentFactoryResolver: ComponentFactoryResolver,
               private formService: FormService,
+              private unitStateService: UnitStateService,
               private formBuilder: FormBuilder) {
   }
 
@@ -44,14 +45,15 @@ export class ElementComponent implements OnInit {
     const elementComponent = this.elementComponentContainer.createComponent(elementComponentFactory).instance;
     elementComponent.elementModel = this.elementModel;
 
-    this.isInputElement = Object.prototype.hasOwnProperty.call(this.elementModel, 'required');
-    if (this.isInputElement) {
-      const unitStateElementCode = this.unitStateElementCodes
-        .find((element: UnitStateElementCode): boolean => element.id === this.elementModel.id);
-      if (unitStateElementCode) {
-        elementComponent.elementModel.value = unitStateElementCode.value;
-      }
+    const unitStateElementCode = this.unitStateElementCodes
+      .find((elementCode: UnitStateElementCode): boolean => elementCode.id === this.elementModel.id);
+    if (unitStateElementCode) {
+      elementComponent.elementModel.value = unitStateElementCode.value;
+    }
 
+    this.unitStateService.registerElement(elementComponent.elementModel);
+
+    if (Object.prototype.hasOwnProperty.call(this.elementModel, 'required')) {
       const elementForm = this.formBuilder.group({});
       elementComponent.parentForm = elementForm;
       this.registerFormGroup(elementForm);
@@ -66,7 +68,7 @@ export class ElementComponent implements OnInit {
         (this.elementModel.type === 'text-field' || this.elementModel.type === 'text-area')) {
         this.initEventsForKeyboard(elementComponent);
       }
-    }
+    } // no else
   }
 
   private registerFormGroup(elementForm: FormGroup): void {
diff --git a/projects/player/src/app/components/page/page.component.ts b/projects/player/src/app/components/page/page.component.ts
index cd05e1d0b1fc24278124656572c12f5272de352a..3d5f843ff23b4466a64a4a4a76524a8cab7d2e89 100644
--- a/projects/player/src/app/components/page/page.component.ts
+++ b/projects/player/src/app/components/page/page.component.ts
@@ -5,6 +5,7 @@ import { FormBuilder, FormGroup } from '@angular/forms';
 import { UnitPage } from '../../../../../common/unit';
 import { FormService } from '../../../../../common/form.service';
 import { UnitStateElementCode } from '../../models/verona';
+import { UnitStateService } from '../../services/unit-state.service';
 
 @Component({
   selector: 'app-page',
@@ -25,6 +26,7 @@ export class PageComponent implements OnInit {
   pageForm!: FormGroup;
 
   constructor(private formService: FormService,
+              private unitStateService: UnitStateService,
               private formBuilder: FormBuilder) {}
 
   ngOnInit(): void {
@@ -42,7 +44,7 @@ export class PageComponent implements OnInit {
 
   onIntersection(detectionType: 'top' | 'bottom'): void {
     if (detectionType === 'bottom') {
-      this.formService.addPresentedPage(this.index);
+      this.unitStateService.addPresentedPage(this.index);
     }
     if (detectionType === 'top' || this.isLastPage) {
       this.selectedIndexChange.emit(this.index);
diff --git a/projects/player/src/app/components/unit-state/unit-state.component.ts b/projects/player/src/app/components/unit-state/unit-state.component.ts
index 1ffcb1c3a39dc5d8054c15a95b857fd89d2cbb06..934a482bfe93aa13d3f821aa864ad1ac0f7a05c5 100644
--- a/projects/player/src/app/components/unit-state/unit-state.component.ts
+++ b/projects/player/src/app/components/unit-state/unit-state.component.ts
@@ -19,7 +19,8 @@ import {
 import {
   PlayerConfig, Progress, UnitState, UnitStateElementCode, UnitStateElementCodeStatus, VopNavigationDeniedNotification
 } from '../../models/verona';
-import { UnitPage } from '../../../../../common/unit';
+import { UnitPage, UnitUIElement } from '../../../../../common/unit';
+import { UnitStateService } from '../../services/unit-state.service';
 
 @Component({
   selector: 'app-unit-state',
@@ -37,6 +38,7 @@ export class UnitStateComponent implements OnInit, OnDestroy {
 
   constructor(private formBuilder: FormBuilder,
               private formService: FormService,
+              private unitStateService: UnitStateService,
               private veronaSubscriptionService: VeronaSubscriptionService,
               private veronaPostService: VeronaPostService,
               private messageService: MessageService,
@@ -65,7 +67,10 @@ export class UnitStateComponent implements OnInit, OnDestroy {
     this.formService.elementValueChanged
       .pipe(takeUntil(this.ngUnsubscribe))
       .subscribe((value: ValueChangeElement): void => this.onElementValueChanges(value));
-    this.formService.presentedPageAdded
+    this.unitStateService.elementAdded
+      .pipe(takeUntil(this.ngUnsubscribe))
+      .subscribe((element: UnitUIElement): void => this.addUnitStateElementCode(element));
+    this.unitStateService.presentedPageAdded
       .pipe(takeUntil(this.ngUnsubscribe))
       .subscribe((presentedPage: number): void => this.onPresentedPageAdded(presentedPage));
     this.form.valueChanges
@@ -93,7 +98,6 @@ export class UnitStateComponent implements OnInit, OnDestroy {
 
   private addControl = (control: FormControlElement): void => {
     control.formGroup.addControl(control.id, control.formControl);
-    this.registerUnitStateElementCode(control.id, control.formControl.value);
   };
 
   private setValidators = (validators: FormControlValidators): void => {
@@ -127,7 +131,7 @@ export class UnitStateComponent implements OnInit, OnDestroy {
 
   private onFormChanges(): void {
     // eslint-disable-next-line no-console
-    console.log('player: onFormChanges', this.form.value);
+    console.log('player: onFormChanges', this.unitStateElementCodes);
     this.sendVopStateChangedNotification();
   }
 
@@ -154,7 +158,7 @@ export class UnitStateComponent implements OnInit, OnDestroy {
 
   private setUnitStateElementCodeValue(id: string, value: string | number | boolean | undefined) {
     const unitStateElementCode = this.unitStateElementCodes
-      .find((element: UnitStateElementCode): boolean => element.id === id);
+      .find((elementCode: UnitStateElementCode): boolean => elementCode.id === id);
     if (unitStateElementCode) {
       unitStateElementCode.value = value;
     }
@@ -162,17 +166,17 @@ export class UnitStateComponent implements OnInit, OnDestroy {
 
   private setUnitStateElementCodeStatus(id: string, status: UnitStateElementCodeStatus) {
     const unitStateElementCode = this.unitStateElementCodes
-      .find((element: UnitStateElementCode): boolean => element.id === id);
+      .find((elementCode: UnitStateElementCode): boolean => elementCode.id === id);
     if (unitStateElementCode) {
       unitStateElementCode.status = status;
     }
   }
 
-  private registerUnitStateElementCode(id: string, value: string | number | boolean | undefined) {
+  private addUnitStateElementCode(element: UnitUIElement) {
     const unitStateElementCode = this.unitStateElementCodes
-      .find((element: UnitStateElementCode): boolean => element.id === id);
+      .find((elementCode: UnitStateElementCode): boolean => elementCode.id === element.id);
     if (!unitStateElementCode) {
-      this.unitStateElementCodes.push({ id: id, value: value, status: 'NOT_REACHED' });
+      this.unitStateElementCodes.push({ id: element.id, value: element.value, status: 'NOT_REACHED' });
     }
   }
 
diff --git a/projects/player/src/app/models/verona.ts b/projects/player/src/app/models/verona.ts
index 251c44488cb0a07d7e4e3ffc6f5b13a0744a673f..fdd656a6ab93fe098faa03ac8c44ba2e3197e8c2 100644
--- a/projects/player/src/app/models/verona.ts
+++ b/projects/player/src/app/models/verona.ts
@@ -22,7 +22,7 @@ export interface PlayerConfig {
 export interface UnitStateElementCode {
   id: string;
   status: UnitStateElementCodeStatus;
-  value: string | number | boolean | undefined;
+  value: string | string[] | number | boolean | undefined;
 }
 
 export interface UnitState {
diff --git a/projects/player/src/app/services/unit-state.service.ts b/projects/player/src/app/services/unit-state.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2d9823f44508246f43b45cdb6e260bd078e6014e
--- /dev/null
+++ b/projects/player/src/app/services/unit-state.service.ts
@@ -0,0 +1,27 @@
+import { Injectable } from '@angular/core';
+import { Observable, Subject } from 'rxjs';
+import { UnitUIElement } from '../../../../common/unit';
+
+@Injectable({
+  providedIn: 'root'
+})
+export class UnitStateService {
+  private _elementAdded = new Subject<UnitUIElement>();
+  private _presentedPageAdded = new Subject<number>();
+
+  get elementAdded(): Observable<UnitUIElement> {
+    return this._elementAdded.asObservable();
+  }
+
+  get presentedPageAdded(): Observable<number> {
+    return this._presentedPageAdded.asObservable();
+  }
+
+  registerElement(element: UnitUIElement): void {
+    this._elementAdded.next(element);
+  }
+
+  addPresentedPage(presentedPage: number): void {
+    this._presentedPageAdded.next(presentedPage);
+  }
+}