diff --git a/applications/message_handler_openamp/remoteproc.cpp b/applications/message_handler_openamp/remoteproc.cpp
index 8fda69b..ed6f7d0 100644
--- a/applications/message_handler_openamp/remoteproc.cpp
+++ b/applications/message_handler_openamp/remoteproc.cpp
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-FileCopyrightText: Copyright 2022-2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
  * SPDX-License-Identifier: Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the License); you may
@@ -44,20 +44,11 @@
  *****************************************************************************/
 
 RProc::RProc(Mailbox::Mailbox &_mailbox, resource_table &table, size_t tableSize) :
-    mailbox(_mailbox),
-    ops{
-        .init       = init,       // initialize the remoteproc instance
-        .remove     = remove,     // remove the remoteproc instance
-        .mmap       = nullptr,    // memory mapped the memory with physical address as input
-        .handle_rsc = handle_rsc, // handle the vendor specific resource
-        .config     = nullptr,    // configure the remoteproc to make it ready to load and run executable
-        .start      = nullptr,    // kick the remoteproc to run application
-        .stop = nullptr, // stop the remoteproc from running application, the resource such as memory may not be off.
-        .shutdown = nullptr, // shutdown the remoteproc and release its resources.
-        .notify   = notify,  // notify the remote
-        .get_mem  = nullptr, // get remoteproc memory I/O region.
-    },
-    vdev(nullptr), mems(), regions(), notifySemaphore(xSemaphoreCreateBinary()) {
+    mailbox(_mailbox), ops({}), vdev(nullptr), mems(), regions(), notifySemaphore(xSemaphoreCreateBinary()) {
+    ops.init       = init;       // initialize the remoteproc instance
+    ops.remove     = remove;     // remove the remoteproc instance
+    ops.handle_rsc = handle_rsc; // handle the vendor specific resource
+    ops.notify     = notify;     // notify the remote
     mailbox.registerCallback(mailboxCallback, static_cast<void *>(this));
 
     if (!remoteproc_init(&rproc, &ops, this)) {
