diff --git a/y2023/www/field_handler.ts b/y2023/www/field_handler.ts
index 24a55fa..6952a41 100644
--- a/y2023/www/field_handler.ts
+++ b/y2023/www/field_handler.ts
@@ -411,7 +411,7 @@
           '<br/>';
       for (let i = 0; i < this.superstructureStatus.arm()
                               .rollJointEstimatorState()
-                              .errors.length;
+                              .errorsLength();
            i++) {
         zeroingErrors += ZeroingError[this.superstructureStatus.arm()
                                           .rollJointEstimatorState()
@@ -423,7 +423,7 @@
           '<br/>';
       for (let i = 0; i < this.superstructureStatus.arm()
                               .proximalEstimatorState()
-                              .errors.length;
+                              .errorsLength();
            i++) {
         zeroingErrors += ZeroingError[this.superstructureStatus.arm()
                                           .proximalEstimatorState()
@@ -434,7 +434,7 @@
           'Distal Joint Errors:' +
           '<br/>';
       for (let i = 0; i <
-           this.superstructureStatus.arm().distalEstimatorState().errors.length;
+           this.superstructureStatus.arm().distalEstimatorState().errorsLength();
            i++) {
         zeroingErrors += ZeroingError[this.superstructureStatus.arm()
                                           .distalEstimatorState()
@@ -445,7 +445,7 @@
           'Wrist Errors:' +
           '<br/>';
       for (let i = 0;
-           i < this.superstructureStatus.wrist().estimatorState().errors.length;
+           i < this.superstructureStatus.wrist().estimatorState().errorsLength();
            i++) {
         zeroingErrors += ZeroingError[this.superstructureStatus.wrist()
                                           .estimatorState()
