diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 1ce1ad4bc02ff043d480396a01fcc010b3ec4fd0..b3ca5553ca52b3e1dbe9631ea8ecddd1ef9bb160 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -45,10 +45,6 @@ target_include_directories(_rpc_client INTERFACE
   ${CMAKE_CURRENT_SOURCE_DIR})
 add_library(common::network::rpc_client ALIAS _rpc_client)
 
-target_include_directories(_rpc_types INTERFACE
-  ${CMAKE_CURRENT_SOURCE_DIR})
-add_library(common::network::rpc_types ALIAS _rpc_types)
-
 add_subdirectory(api)
 target_include_directories(_api_types INTERFACE
   ${CMAKE_CURRENT_SOURCE_DIR})
diff --git a/src/common/api/types.c b/src/common/api/types.c
index ecb60f7d31c014e9f1b81e54b77ed47d6fd98a4c..2026c7c2bfc9aa7c0bfd2537686a55e781b68d75 100644
--- a/src/common/api/types.c
+++ b/src/common/api/types.c
@@ -27,7 +27,6 @@
 #include <assert.h>
 #include <string.h>
 // #include <logger/logger.hpp>
-#include <net/proto/rpc_types.h>
 #include "scord/types.h"
 #include "types-private.h"
 
diff --git a/src/common/net/CMakeLists.txt b/src/common/net/CMakeLists.txt
index c05d27138b983323f988fcd0220627aae57dd0e6..e38e67316c9b0fa1efcb05cdafafb6662167edbe 100644
--- a/src/common/net/CMakeLists.txt
+++ b/src/common/net/CMakeLists.txt
@@ -40,5 +40,3 @@ target_sources(
 )
 
 target_link_libraries(_rpc_server PUBLIC common::config common::logger thallium)
-
-add_subdirectory(proto)
diff --git a/src/common/net/proto/CMakeLists.txt b/src/common/net/proto/CMakeLists.txt
deleted file mode 100644
index 32681285c4f6a8989bceb04a9e706683f742b217..0000000000000000000000000000000000000000
--- a/src/common/net/proto/CMakeLists.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-################################################################################
-# Copyright 2021-2022, Barcelona Supercomputing Center (BSC), Spain            #
-#                                                                              #
-# This software was partially supported by the EuroHPC-funded project ADMIRE   #
-#   (Project ID: 956748, https://www.admire-eurohpc.eu).                       #
-#                                                                              #
-# This file is part of scord.                                                  #
-#                                                                              #
-# scord is free software: you can redistribute it and/or modify                #
-# it under the terms of the GNU General Public License as published by         #
-# the Free Software Foundation, either version 3 of the License, or            #
-# (at your option) any later version.                                          #
-#                                                                              #
-# scord is distributed in the hope that it will be useful,                     #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of               #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                #
-# GNU General Public License for more details.                                 #
-#                                                                              #
-# You should have received a copy of the GNU General Public License            #
-# along with scord.  If not, see <https://www.gnu.org/licenses/>.              #
-#                                                                              #
-# SPDX-License-Identifier: GPL-3.0-or-later                                    #
-################################################################################
-
-add_library(_rpc_types STATIC)
-
-set_property(TARGET _rpc_types PROPERTY POSITION_INDEPENDENT_CODE ON)
-
-target_include_directories(_rpc_types PUBLIC ${CMAKE_SOURCE_DIR}/src/lib)
-target_sources(
-  _rpc_types
-  PRIVATE rpc_types.h rpc_types.c
-)
-
-target_link_libraries(_rpc_types PRIVATE common::api::types Mercury::Mercury
-  Margo::Margo)
diff --git a/src/common/net/proto/rpc_types.c b/src/common/net/proto/rpc_types.c
deleted file mode 100644
index 623d9803fe744af85de219182fd84b5c7d17703e..0000000000000000000000000000000000000000
--- a/src/common/net/proto/rpc_types.c
+++ /dev/null
@@ -1,1150 +0,0 @@
-/******************************************************************************
- * Copyright 2021-2022, Barcelona Supercomputing Center (BSC), Spain
- *
- * This software was partially supported by the EuroHPC-funded project ADMIRE
- *   (Project ID: 956748, https://www.admire-eurohpc.eu).
- *
- * This file is part of scord.
- *
- * scord is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * scord is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with scord.  If not, see <https://www.gnu.org/licenses/>.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *****************************************************************************/
-
-#include "rpc_types.h"
-
-hg_return_t (*hg_proc_ADM_adhoc_storage_type_t)(hg_proc_t,
-                                                void*) = hg_proc_hg_uint32_t;
-hg_return_t (*hg_proc_ADM_pfs_storage_type_t)(hg_proc_t,
-                                              void*) = hg_proc_hg_uint32_t;
-hg_return_t (*hg_proc_ADM_qos_scope_t)(hg_proc_t, void*) = hg_proc_hg_uint32_t;
-hg_return_t (*hg_proc_ADM_qos_class_t)(hg_proc_t, void*) = hg_proc_hg_uint32_t;
-
-hg_return_t
-hg_proc_ADM_node_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_node_t* node = (ADM_node_t*) data;
-    ADM_node_t tmp = NULL;
-    hg_size_t node_length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            // find out the length of the adm_node object we need to send
-            node_length = *node ? sizeof(adm_node) : 0;
-            ret = hg_proc_hg_size_t(proc, &node_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!node_length) {
-                return HG_SUCCESS;
-            }
-
-            // if we actually need to send an adm_node object,
-            // write it to the mercury buffer
-            tmp = *node;
-
-            ret = hg_proc_adm_node(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            break;
-
-        case HG_DECODE:
-            // find out the length of the adm_node object
-            ret = hg_proc_hg_size_t(proc, &node_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!node_length) {
-                *node = NULL;
-                break;
-            }
-
-            // if the received adm_node object was not NULL, read each of
-            // its fields from the mercury buffer
-            tmp = (adm_node*) calloc(1, sizeof(adm_node));
-
-            ret = hg_proc_adm_node(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // return the newly-created ctx
-            *node = tmp;
-            break;
-
-        case HG_FREE:
-            tmp = *node;
-            free(tmp);
-            break;
-    }
-
-    return ret;
-}
-
-hg_return_t
-hg_proc_ADM_dataset_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_dataset_t* dataset = (ADM_dataset_t*) data;
-    ADM_dataset_t tmp = NULL;
-    hg_size_t dataset_length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            // find out the length of the adm_dataset object we need to send
-            dataset_length = *dataset ? sizeof(adm_dataset) : 0;
-            ret = hg_proc_hg_size_t(proc, &dataset_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!dataset_length) {
-                return HG_SUCCESS;
-            }
-
-            // if we actually need to send an adm_dataset object,
-            // write it to the mercury buffer
-            tmp = *dataset;
-
-            ret = hg_proc_adm_dataset(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            break;
-
-        case HG_DECODE:
-            // find out the length of the adm_dataset object
-            ret = hg_proc_hg_size_t(proc, &dataset_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!dataset_length) {
-                *dataset = NULL;
-                break;
-            }
-
-            // if the received adm_dataset object was not NULL, read each of
-            // its fields from the mercury buffer
-            tmp = (adm_dataset*) calloc(1, sizeof(adm_dataset));
-
-            ret = hg_proc_adm_dataset(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // return the newly-created ctx
-            *dataset = tmp;
-            break;
-
-        case HG_FREE:
-            tmp = *dataset;
-            free(tmp);
-            break;
-    }
-
-    return ret;
-}
-
-hg_return_t
-hg_proc_ADM_job_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_job_t* job = (ADM_job_t*) data;
-    ADM_job_t tmp = NULL;
-    hg_size_t job_length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            // find out the length of the adm_storage object we need to send
-            job_length = *job ? sizeof(adm_job) : 0;
-            ret = hg_proc_hg_size_t(proc, &job_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!job_length) {
-                return HG_SUCCESS;
-            }
-
-            // if we actually need to send an adm_job object,
-            // write it to the mercury buffer
-            tmp = *job;
-
-            ret = hg_proc_adm_job(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            break;
-
-        case HG_DECODE:
-            // find out the length of the adm_storage object
-            ret = hg_proc_hg_size_t(proc, &job_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!job_length) {
-                *job = NULL;
-                break;
-            }
-
-            // if the received adm_job object was not NULL, read each of
-            // its fields from the mercury buffer
-            tmp = (adm_job*) calloc(1, sizeof(adm_job));
-
-            ret = hg_proc_adm_job(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // return the newly-created ctx
-            *job = tmp;
-            break;
-
-        case HG_FREE:
-            tmp = *job;
-            free(tmp);
-            break;
-    }
-
-    return ret;
-}
-
-hg_return_t
-hg_proc_ADM_transfer_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_transfer_t* transfer = (ADM_transfer_t*) data;
-    ADM_transfer_t tmp = NULL;
-    hg_size_t transfer_length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            // find out the length of the adm_transfer object we need to send
-            transfer_length = *transfer ? sizeof(adm_transfer) : 0;
-            ret = hg_proc_hg_size_t(proc, &transfer_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!transfer_length) {
-                return HG_SUCCESS;
-            }
-
-            // if we actually need to send an adm_transfer object,
-            // write it to the mercury buffer
-            tmp = *transfer;
-
-            ret = hg_proc_adm_transfer(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            break;
-
-        case HG_DECODE:
-            // find out the length of the adm_transfer object
-            ret = hg_proc_hg_size_t(proc, &transfer_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!transfer_length) {
-                *transfer = NULL;
-                break;
-            }
-
-            // if the received adm_transfer object was not NULL, read each of
-            // its fields from the mercury buffer
-            tmp = (adm_transfer*) calloc(1, sizeof(adm_transfer));
-
-            ret = hg_proc_adm_transfer(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // return the newly-created ctx
-            *transfer = tmp;
-            break;
-
-        case HG_FREE:
-            tmp = *transfer;
-            free(tmp);
-            break;
-    }
-
-    return ret;
-}
-
-hg_return_t
-hg_proc_ADM_dataset_list_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_dataset_list_t* list = (ADM_dataset_list_t*) data;
-    ADM_dataset_list_t tmp = NULL;
-
-    hg_size_t length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            tmp = *list;
-            // write the length of the list
-            length = tmp->l_length;
-            ret = hg_proc_hg_size_t(proc, &tmp->l_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // write the list
-            for(size_t i = 0; i < length; ++i) {
-                ret = hg_proc_adm_dataset(proc, &tmp->l_datasets[i]);
-
-                if(ret != HG_SUCCESS) {
-                    break;
-                }
-            }
-            break;
-
-        case HG_DECODE: {
-
-            // find out the length of the list
-            ret = hg_proc_hg_size_t(proc, &length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // loop and create list elements
-            tmp = (ADM_dataset_list_t) calloc(1,
-                                              sizeof(struct adm_dataset_list));
-            tmp->l_length = length;
-            tmp->l_datasets =
-                    (adm_dataset*) calloc(length, sizeof(adm_dataset));
-
-            for(size_t i = 0; i < length; ++i) {
-                ret = hg_proc_adm_dataset(proc, &tmp->l_datasets[i]);
-
-                if(ret != HG_SUCCESS) {
-                    break;
-                }
-            }
-
-            // return the newly-created list
-            *list = tmp;
-
-            break;
-        }
-
-        case HG_FREE:
-            tmp = *list;
-            free(tmp->l_datasets);
-            free(tmp);
-            ret = HG_SUCCESS;
-            break;
-    }
-
-    return ret;
-}
-
-
-hg_return_t
-hg_proc_ADM_adhoc_storage_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_adhoc_storage_t* storage = (ADM_adhoc_storage_t*) data;
-    ADM_adhoc_storage_t tmp = NULL;
-    hg_size_t storage_length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            // find out the length of the adm_adhoc_storage object we need to
-            // send
-            storage_length = *storage ? sizeof(adm_adhoc_storage) : 0;
-            ret = hg_proc_hg_size_t(proc, &storage_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!storage_length) {
-                return HG_SUCCESS;
-            }
-
-            // if we actually need to send an adm_adhoc_storage object,
-            // write each of its fields to the mercury buffer
-            tmp = *storage;
-
-            // 1. the storage type
-            ret = hg_proc_hg_uint32_t(proc, &tmp->s_type);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 2. the storage id
-            ret = hg_proc_hg_const_string_t(proc, &tmp->s_name);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 3. the server-assigned id
-            ret = hg_proc_hg_int64_t(proc, &tmp->s_id);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 4. the appropriate storage context
-            ret = hg_proc_ADM_adhoc_context_t(proc, &tmp->s_adhoc_ctx);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            break;
-
-        case HG_DECODE:
-            // find out the length of the adm_adhoc_storage object
-            ret = hg_proc_hg_size_t(proc, &storage_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!storage_length) {
-                *storage = NULL;
-                break;
-            }
-
-            // if the received adm_adhoc_storage object was not NULL, read each
-            // of its fields from the mercury buffer
-            tmp = (adm_adhoc_storage*) calloc(1, sizeof(adm_adhoc_storage));
-
-            // 1. the storage type
-            ret = hg_proc_uint32_t(proc, &tmp->s_type);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 2. the storage id
-            ret = hg_proc_hg_const_string_t(proc, &tmp->s_name);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 3. the server-assigned id
-            ret = hg_proc_hg_int64_t(proc, &tmp->s_id);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 4. the appropriate storage context
-            ret = hg_proc_ADM_adhoc_context_t(proc, &tmp->s_adhoc_ctx);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // return the newly-created ctx
-            *storage = tmp;
-            break;
-
-        case HG_FREE:
-            tmp = *storage;
-            free(tmp);
-            break;
-    }
-
-    return ret;
-}
-
-hg_return_t
-hg_proc_ADM_adhoc_context_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_adhoc_context_t* ctx = (ADM_adhoc_context_t*) data;
-    ADM_adhoc_context_t tmp = NULL;
-    hg_size_t ctx_length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            // find out the length of the context
-            ctx_length = *ctx ? sizeof(adm_adhoc_context) : 0;
-            ret = hg_proc_hg_size_t(proc, &ctx_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!ctx_length) {
-                return HG_SUCCESS;
-            }
-
-            // if not NULL, write the context
-            tmp = *ctx;
-            ret = hg_proc_adm_adhoc_context(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            break;
-
-        case HG_DECODE: {
-
-            // find out the length of the context
-            ret = hg_proc_hg_size_t(proc, &ctx_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!ctx_length) {
-                *ctx = NULL;
-                break;
-            }
-
-            // if not NULL, read the context
-            tmp = (ADM_adhoc_context_t) calloc(
-                    1, sizeof(struct adm_adhoc_context));
-            ret = hg_proc_adm_adhoc_context(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // return the newly-created ctx
-            *ctx = tmp;
-            break;
-        }
-
-        case HG_FREE:
-            tmp = *ctx;
-            free(tmp);
-            ret = HG_SUCCESS;
-            break;
-    }
-
-    return ret;
-}
-
-hg_return_t
-hg_proc_ADM_pfs_storage_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_pfs_storage_t* storage = (ADM_pfs_storage_t*) data;
-    ADM_pfs_storage_t tmp = NULL;
-    hg_size_t storage_length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            // find out the length of the adm_pfs_storage object we need to send
-            storage_length = *storage ? sizeof(adm_pfs_storage) : 0;
-            ret = hg_proc_hg_size_t(proc, &storage_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!storage_length) {
-                return HG_SUCCESS;
-            }
-
-            // if we actually need to send an adm_pfs_storage object,
-            // write each of its fields to the mercury buffer
-            tmp = *storage;
-
-            // 1. the storage type
-            ret = hg_proc_hg_uint32_t(proc, &tmp->s_type);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 2. the storage id
-            ret = hg_proc_hg_const_string_t(proc, &tmp->s_name);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 3. the server-assigned id
-            ret = hg_proc_hg_int64_t(proc, &tmp->s_id);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 4. the appropriate storage context
-            ret = hg_proc_ADM_pfs_context_t(proc, &tmp->s_pfs_ctx);
-            break;
-
-        case HG_DECODE:
-            // find out the length of the adm_pfs_storage object
-            ret = hg_proc_hg_size_t(proc, &storage_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!storage_length) {
-                *storage = NULL;
-                break;
-            }
-
-            // if the received adm_pfs_storage object was not NULL, read each of
-            // its fields from the mercury buffer
-            tmp = (adm_pfs_storage*) calloc(1, sizeof(adm_pfs_storage));
-
-            // 1. the storage type
-            ret = hg_proc_uint32_t(proc, &tmp->s_type);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 2. the storage id
-            ret = hg_proc_hg_const_string_t(proc, &tmp->s_name);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 3. the server-assigned id
-            ret = hg_proc_hg_int64_t(proc, &tmp->s_id);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 4. the appropriate storage context
-            ret = hg_proc_ADM_pfs_context_t(proc, &tmp->s_pfs_ctx);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // return the newly-created ctx
-            *storage = tmp;
-            break;
-
-        case HG_FREE:
-            tmp = *storage;
-            free(tmp);
-            break;
-    }
-
-    return ret;
-}
-
-hg_return_t
-hg_proc_ADM_pfs_context_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_pfs_context_t* ctx = (ADM_pfs_context_t*) data;
-    ADM_pfs_context_t tmp = NULL;
-    hg_size_t ctx_length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            // find out the length of the context
-            ctx_length = *ctx ? sizeof(adm_pfs_context) : 0;
-            ret = hg_proc_hg_size_t(proc, &ctx_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!ctx_length) {
-                return HG_SUCCESS;
-            }
-
-            // if not NULL, write the context
-            tmp = *ctx;
-            ret = hg_proc_adm_pfs_context(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            break;
-
-        case HG_DECODE: {
-
-            // find out the length of the context
-            ret = hg_proc_hg_size_t(proc, &ctx_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!ctx_length) {
-                *ctx = NULL;
-                break;
-            }
-
-            // if not NULL, read the context
-            tmp = (ADM_pfs_context_t) calloc(1, sizeof(struct adm_pfs_context));
-            ret = hg_proc_adm_pfs_context(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // return the newly-created ctx
-            *ctx = tmp;
-            break;
-        }
-
-        case HG_FREE:
-            tmp = *ctx;
-            free(tmp);
-            ret = HG_SUCCESS;
-            break;
-    }
-
-    return ret;
-}
-
-
-hg_return_t
-hg_proc_ADM_qos_limit_list_t(hg_proc_t proc, void* data) {
-    hg_return_t ret = HG_SUCCESS;
-    ADM_qos_limit_list_t* list = (ADM_qos_limit_list_t*) data;
-    ADM_qos_limit_list_t tmp = NULL;
-
-    hg_size_t length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            tmp = *list;
-            // write the length of the list
-            length = tmp->l_length;
-            ret = hg_proc_hg_size_t(proc, &tmp->l_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // write the list
-            for(size_t i = 0; i < length; ++i) {
-                ret = hg_proc_adm_qos_limit(proc, &tmp->l_limits[i]);
-
-                if(ret != HG_SUCCESS) {
-                    break;
-                }
-            }
-            break;
-
-        case HG_DECODE: {
-
-            // find out the length of the list
-            ret = hg_proc_hg_size_t(proc, &length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // loop and create list elements
-            tmp = (ADM_qos_limit_list_t) calloc(
-                    1, sizeof(struct adm_qos_limit_list));
-            tmp->l_length = length;
-            tmp->l_limits =
-                    (adm_qos_limit*) calloc(length, sizeof(adm_qos_limit));
-
-            for(size_t i = 0; i < length; ++i) {
-                ret = hg_proc_adm_qos_limit(proc, &tmp->l_limits[i]);
-
-                if(ret != HG_SUCCESS) {
-                    break;
-                }
-            }
-
-            // return the newly-created list
-            *list = tmp;
-
-            break;
-        }
-
-        case HG_FREE:
-            tmp = *list;
-            free(tmp->l_limits);
-            free(tmp);
-            ret = HG_SUCCESS;
-            break;
-    }
-
-    return ret;
-}
-
-hg_return_t
-hg_proc_ADM_qos_entity_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_qos_entity_t* qos_entity = (ADM_qos_entity_t*) data;
-    ADM_qos_entity_t tmp = NULL;
-    hg_size_t qos_entity_length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            // find out the length of the adm_qos_entity object we need to send
-            qos_entity_length = *qos_entity ? sizeof(adm_qos_entity) : 0;
-            ret = hg_proc_hg_size_t(proc, &qos_entity_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!qos_entity_length) {
-                return HG_SUCCESS;
-            }
-
-            // if we actually need to send an adm_qos_entity object,
-            // write each of its fields to the mercury buffer
-
-            // 1. the QoS scope
-            ret = hg_proc_ADM_qos_scope_t(proc, &tmp->e_scope);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 2. the appropriate related data depending on the scope (i.e. an
-            // ADM_node_t, ADM_job_t, ADM_dataset_t, or ADM_transfer_t)
-            switch(tmp->e_scope) {
-
-                case ADM_QOS_SCOPE_DATASET:
-                    ret = hg_proc_ADM_dataset_t(proc, &tmp->e_dataset);
-                    break;
-                case ADM_QOS_SCOPE_NODE:
-                    ret = hg_proc_ADM_node_t(proc, &tmp->e_node);
-                    break;
-                case ADM_QOS_SCOPE_JOB:
-                    ret = hg_proc_ADM_job_t(proc, &tmp->e_job);
-                    break;
-                case ADM_QOS_SCOPE_TRANSFER:
-                    ret = hg_proc_ADM_transfer_t(proc, &tmp->e_transfer);
-                    break;
-            }
-
-            break;
-
-        case HG_DECODE:
-            // find out the length of the adm_qos_entity object
-            ret = hg_proc_hg_size_t(proc, &qos_entity_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!qos_entity_length) {
-                *qos_entity = NULL;
-                break;
-            }
-
-            // if the received adm_qos_entity object was not NULL, read each
-            // of its fields from the mercury buffer
-            tmp = (adm_qos_entity*) calloc(1, sizeof(adm_qos_entity));
-
-            // 1. the QoS scope
-            ret = hg_proc_ADM_qos_scope_t(proc, &tmp->e_scope);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // 2. the appropriate related data depending on the scope (i.e. an
-            // ADM_node_t, ADM_job_t, ADM_dataset_t, or ADM_transfer_t)
-            switch(tmp->e_scope) {
-
-                case ADM_QOS_SCOPE_DATASET:
-                    ret = hg_proc_ADM_dataset_t(proc, &tmp->e_dataset);
-                    break;
-                case ADM_QOS_SCOPE_NODE:
-                    ret = hg_proc_ADM_node_t(proc, &tmp->e_node);
-                    break;
-                case ADM_QOS_SCOPE_JOB:
-                    ret = hg_proc_ADM_job_t(proc, &tmp->e_job);
-                    break;
-                case ADM_QOS_SCOPE_TRANSFER:
-                    ret = hg_proc_ADM_transfer_t(proc, &tmp->e_transfer);
-                    break;
-            }
-
-            // return the newly-created entity
-            *qos_entity = tmp;
-            break;
-
-        case HG_FREE:
-            tmp = *qos_entity;
-            free(tmp);
-            break;
-    }
-
-    return ret;
-}
-
-hg_return_t
-hg_proc_ADM_node_list_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_node_list_t* list = (ADM_node_list_t*) data;
-    ADM_node_list_t tmp = NULL;
-
-    hg_size_t length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            tmp = *list;
-            // write the length of the list
-            length = tmp->l_length;
-            ret = hg_proc_hg_size_t(proc, &tmp->l_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // write the list
-            for(size_t i = 0; i < length; ++i) {
-                ret = hg_proc_adm_node(proc, &tmp->l_nodes[i]);
-
-                if(ret != HG_SUCCESS) {
-                    break;
-                }
-            }
-            break;
-
-        case HG_DECODE: {
-
-            // find out the length of the list
-            ret = hg_proc_hg_size_t(proc, &length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // loop and create list elements
-            tmp = (ADM_node_list_t) calloc(1, sizeof(struct adm_node_list));
-            tmp->l_length = length;
-            tmp->l_nodes = (adm_node*) calloc(length, sizeof(adm_node));
-
-            for(size_t i = 0; i < length; ++i) {
-                ret = hg_proc_adm_node(proc, &tmp->l_nodes[i]);
-
-                if(ret != HG_SUCCESS) {
-                    break;
-                }
-            }
-
-            // return the newly-created list
-            *list = tmp;
-
-            break;
-        }
-
-        case HG_FREE:
-            tmp = *list;
-            free(tmp->l_nodes);
-            free(tmp);
-            ret = HG_SUCCESS;
-            break;
-    }
-
-    return ret;
-}
-
-hg_return_t
-hg_proc_ADM_adhoc_resources_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_adhoc_resources_t* res = (ADM_adhoc_resources_t*) data;
-    ADM_adhoc_resources_t tmp = NULL;
-    hg_size_t res_length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            // find out the length of the adm_adhoc_resources object we need to
-            // send
-            res_length = *res ? sizeof(adm_adhoc_resources) : 0;
-            ret = hg_proc_hg_size_t(proc, &res_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!res_length) {
-                return HG_SUCCESS;
-            }
-
-            // if we actually need to send an adm_transfer object,
-            // write it to the mercury buffer
-            tmp = *res;
-
-            ret = hg_proc_adm_adhoc_resources(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            break;
-
-        case HG_DECODE:
-            // find out the length of the adm_transfer object
-            ret = hg_proc_hg_size_t(proc, &res_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!res_length) {
-                *res = NULL;
-                break;
-            }
-
-            // if the received adm_adhoc_resources object was not NULL, read
-            // each of its fields from the mercury buffer
-            tmp = (adm_adhoc_resources*) calloc(1, sizeof(adm_adhoc_resources));
-
-            ret = hg_proc_adm_adhoc_resources(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // return the newly-created ctx
-            *res = tmp;
-            break;
-
-        case HG_FREE:
-            tmp = *res;
-            free(tmp);
-            break;
-    }
-
-    return ret;
-}
-
-hg_return_t
-hg_proc_ADM_job_resources_t(hg_proc_t proc, void* data) {
-
-    hg_return_t ret = HG_SUCCESS;
-    ADM_job_resources_t* res = (ADM_job_resources_t*) data;
-    ADM_job_resources_t tmp = NULL;
-    hg_size_t res_length = 0;
-
-    switch(hg_proc_get_op(proc)) {
-
-        case HG_ENCODE:
-            // find out the length of the adm_job_resources object we need to
-            // send
-            res_length = *res ? sizeof(adm_job_resources) : 0;
-            ret = hg_proc_hg_size_t(proc, &res_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!res_length) {
-                return HG_SUCCESS;
-            }
-
-            // if we actually need to send an adm_transfer object,
-            // write it to the mercury buffer
-            tmp = *res;
-
-            ret = hg_proc_adm_job_resources(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            break;
-
-        case HG_DECODE:
-            // find out the length of the adm_transfer object
-            ret = hg_proc_hg_size_t(proc, &res_length);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            if(!res_length) {
-                *res = NULL;
-                break;
-            }
-
-            // if the received adm_job_resources object was not NULL, read
-            // each of its fields from the mercury buffer
-            tmp = (adm_job_resources*) calloc(1, sizeof(adm_job_resources));
-
-            ret = hg_proc_adm_job_resources(proc, tmp);
-
-            if(ret != HG_SUCCESS) {
-                break;
-            }
-
-            // return the newly-created ctx
-            *res = tmp;
-            break;
-
-        case HG_FREE:
-            tmp = *res;
-            free(tmp);
-            break;
-    }
-
-    return ret;
-}
diff --git a/src/common/net/proto/rpc_types.h b/src/common/net/proto/rpc_types.h
deleted file mode 100644
index f62fc561dff96c51a364497b11ace0b4c78c093c..0000000000000000000000000000000000000000
--- a/src/common/net/proto/rpc_types.h
+++ /dev/null
@@ -1,657 +0,0 @@
-/******************************************************************************
- * Copyright 2021-2022, Barcelona Supercomputing Center (BSC), Spain
- *
- * This software was partially supported by the EuroHPC-funded project ADMIRE
- *   (Project ID: 956748, https://www.admire-eurohpc.eu).
- *
- * This file is part of scord.
- *
- * scord is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * scord is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with scord.  If not, see <https://www.gnu.org/licenses/>.
- *
- * SPDX-License-Identifier: GPL-3.0-or-later
- *****************************************************************************/
-
-#ifndef SCORD_PROTO_TYPES_HPP
-#define SCORD_PROTO_TYPES_HPP
-
-#if 0
-#include <stdlib.h> // NOLINT
-#include <mercury_macros.h>
-#include <mercury_proc_string.h>
-#include <scord/types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif // __cplusplus
-
-/**
- * N.B. MERCURY_GEN_STRUCT_PROC requires a `typedef` as its first argument, but
- * admire_types.h also requires types to be defined as `struct T`s. Defining RPC
- * types as `typedef struct T { ... } T;` solves both problems
- */
-
-#if 0
-typedef struct adm_node {
-    const char* n_hostname;
-} adm_node;
-
-hg_return_t
-hg_proc_ADM_node_t(hg_proc_t proc, void* data);
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_node, // NOLINT
-        ((hg_const_string_t) (n_hostname))
-);
-// clang-format on
-
-typedef struct adm_dataset {
-    const char* d_id;
-} adm_dataset;
-
-hg_return_t
-hg_proc_ADM_dataset_t(hg_proc_t proc, void* data);
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_dataset, // NOLINT
-        ((hg_const_string_t) (d_id))
-);
-// clang-format on
-
-typedef struct adm_job {
-    uint64_t j_id;
-    uint64_t j_slurm_id;
-} adm_job;
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_job, // NOLINT
-        ((hg_uint64_t) (j_id))
-        ((hg_uint64_t) (j_slurm_id))
-);
-// clang-format on
-
-hg_return_t
-hg_proc_ADM_job_t(hg_proc_t proc, void* data);
-
-typedef struct adm_qos_entity {
-    ADM_qos_scope_t e_scope;
-    union {
-        ADM_node_t e_node;
-        ADM_job_t e_job;
-        ADM_dataset_t e_dataset;
-        ADM_transfer_t e_transfer;
-    };
-} adm_qos_entity;
-
-extern hg_return_t (*hg_proc_ADM_qos_scope_t)(hg_proc_t, void*);
-
-hg_return_t
-hg_proc_ADM_qos_entity_t(hg_proc_t proc, void* data);
-#endif
-
-typedef struct adm_qos_limit {
-    ADM_qos_entity_t l_entity;
-    ADM_qos_class_t l_class;
-    hg_uint64_t l_value;
-} adm_qos_limit;
-
-extern hg_return_t (*hg_proc_ADM_qos_class_t)(hg_proc_t, void*);
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_qos_limit, // NOLINT
-        ((ADM_qos_entity_t) (l_entity))
-        ((ADM_qos_class_t) (l_class))
-        ((hg_uint64_t) (l_value))
-)
-// clang-format on
-
-typedef struct adm_transfer {
-    uint64_t t_id;
-} adm_transfer;
-
-hg_return_t
-hg_proc_ADM_transfer_t(hg_proc_t proc, void* data);
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_transfer, // NOLINT
-        ((hg_uint64_t) (t_id))
-);
-// clang-format on
-
-typedef struct adm_dataset_info {
-    // TODO: undefined for now
-    int32_t placeholder;
-} adm_dataset_info;
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_dataset_info, // NOLINT
-        ((hg_int32_t) (placeholder))
-);
-// clang-format on
-
-typedef struct adm_adhoc_context {
-    /** The adhoc storage system execution mode */
-    ADM_adhoc_mode_t c_mode;
-    /** The adhoc storage system access type */
-    ADM_adhoc_access_t c_access;
-    /** The resources assigned for the adhoc storage system */
-    ADM_adhoc_resources_t c_resources;
-    /** The adhoc storage system walltime */
-    uint32_t c_walltime;
-    /** Whether the adhoc storage system should flush data in the background */
-    bool c_should_bg_flush;
-} adm_adhoc_context;
-
-hg_return_t
-hg_proc_ADM_adhoc_resources_t(hg_proc_t proc, void* data);
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_adhoc_context, // NOLINT
-        ((hg_int32_t)            (c_mode))
-        ((hg_int32_t)            (c_access))
-        ((ADM_adhoc_resources_t) (c_resources))
-        ((hg_uint32_t)           (c_walltime))
-        ((hg_bool_t)             (c_should_bg_flush))
-)
-// clang-format on
-
-typedef struct adm_pfs_context {
-    /** The PFS mount point */
-    const char* c_mount;
-} adm_pfs_context;
-
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_pfs_context, // NOLINT
-        ((hg_const_string_t) (c_mount))
-);
-// clang-format on
-
-extern hg_return_t (*hg_proc_ADM_adhoc_storage_type_t)(hg_proc_t, void*);
-
-typedef struct adm_adhoc_storage {
-    const char* s_name;
-    ADM_adhoc_storage_type_t s_type;
-    uint64_t s_id;
-    ADM_adhoc_context_t s_adhoc_ctx;
-} adm_adhoc_storage;
-
-hg_return_t
-hg_proc_ADM_adhoc_storage_t(hg_proc_t proc, void* data);
-
-extern hg_return_t (*hg_proc_ADM_pfs_storage_type_t)(hg_proc_t, void*);
-
-typedef struct adm_pfs_storage {
-    const char* s_name;
-    ADM_pfs_storage_type_t s_type;
-    uint64_t s_id;
-    ADM_pfs_context_t s_pfs_ctx;
-} adm_pfs_storage;
-
-hg_return_t
-hg_proc_ADM_pfs_storage_t(hg_proc_t proc, void* data);
-
-struct adm_node_list {
-    /** An array of nodes */
-    adm_node* l_nodes;
-    /** The length of the array */
-    size_t l_length;
-};
-
-hg_return_t
-hg_proc_ADM_node_list_t(hg_proc_t proc, void* data);
-
-typedef struct adm_adhoc_resources {
-    ADM_node_list_t r_nodes;
-} adm_adhoc_resources;
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_adhoc_resources, // NOLINT
-        ((ADM_node_list_t) (r_nodes))
-);
-// clang-format on
-
-typedef struct adm_data_operation {
-    // TODO: undefined for now
-    int32_t placeholder;
-} adm_data_operation;
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_data_operation, // NOLINT
-        ((hg_int32_t) (placeholder))
-);
-// clang-format on
-
-
-struct adm_dataset_list {
-    /** An array of datasets */
-    adm_dataset* l_datasets;
-    /** The length of the array */
-    size_t l_length;
-};
-
-hg_return_t
-hg_proc_ADM_dataset_list_t(hg_proc_t proc, void* data);
-
-hg_return_t
-hg_proc_ADM_adhoc_context_t(hg_proc_t proc, void* data);
-
-hg_return_t
-hg_proc_ADM_pfs_context_t(hg_proc_t proc, void* data);
-
-
-/** The I/O requirements for a job */
-typedef struct adm_job_requirements {
-    /** An array of input datasets */
-    ADM_dataset_list_t r_inputs;
-    /** An array of output datasets */
-    ADM_dataset_list_t r_outputs;
-    /** An optional definition for a specific storage instance */
-    ADM_adhoc_storage_t r_adhoc_storage;
-} adm_job_requirements;
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_job_requirements, // NOLINT
-        ((ADM_dataset_list_t)  (r_inputs))
-        ((ADM_dataset_list_t)  (r_outputs))
-        ((ADM_adhoc_storage_t) (r_adhoc_storage))
-);
-// clang-format on
-
-/** The resources assigned to a job */
-typedef struct adm_job_resources {
-    ADM_node_list_t r_nodes;
-} adm_job_resources;
-
-// clang-format off
-MERCURY_GEN_STRUCT_PROC(
-    adm_job_resources, // NOLINT
-        ((ADM_node_list_t) (r_nodes))
-);
-// clang-format on
-
-// clang-format off
-
-MERCURY_GEN_PROC(
-    ADM_ping_out_t,
-        ((hg_uint64_t) (op_id))
-        ((int32_t) (retval))
-);
-
-hg_return_t
-hg_proc_ADM_job_resources_t(hg_proc_t proc, void* data);
-
-/// ADM_register_job
-MERCURY_GEN_PROC(
-    ADM_register_job_in_t,
-        ((ADM_job_resources_t)  (job_resources))
-        ((adm_job_requirements) (reqs))
-        ((hg_uint64_t)          (slurm_job_id))
-);
-
-MERCURY_GEN_PROC(
-    ADM_register_job_out_t,
-        ((hg_uint64_t) (op_id))
-        ((int32_t) (retval))
-        ((ADM_job_t) (job))
-);
-
-/// ADM_update_job
-MERCURY_GEN_PROC(
-    ADM_update_job_in_t,
-        ((ADM_job_t) (job))
-        ((ADM_job_resources_t) (job_resources))
-);
-
-MERCURY_GEN_PROC(
-    ADM_update_job_out_t,
-        ((hg_uint64_t) (op_id))
-        ((int32_t) (retval))
-);
-
-/// ADM_remove_job
-MERCURY_GEN_PROC(
-    ADM_remove_job_in_t,
-        ((ADM_job_t) (job))
-);
-
-MERCURY_GEN_PROC(
-    ADM_remove_job_out_t,
-        ((hg_uint64_t) (op_id))
-        ((hg_int32_t) (retval))
-);
-
-/// ADM_register_adhoc_storage
-MERCURY_GEN_PROC(
-    ADM_register_adhoc_storage_in_t,
-        ((hg_const_string_t)        (name))
-        ((ADM_adhoc_storage_type_t) (type))
-        ((ADM_adhoc_context_t)      (ctx))
-);
-
-MERCURY_GEN_PROC(
-    ADM_register_adhoc_storage_out_t,
-        ((hg_uint64_t) (op_id))
-        ((hg_int32_t) (retval))
-        ((hg_uint64_t) (id))
-);
-
-/// ADM_update_adhoc_storage
-MERCURY_GEN_PROC(
-    ADM_update_adhoc_storage_in_t,
-        ((ADM_adhoc_context_t)(adhoc_storage_ctx))
-        ((hg_uint64_t)(server_id))
-);
-
-MERCURY_GEN_PROC(
-    ADM_update_adhoc_storage_out_t,
-        ((hg_uint64_t) (op_id))
-        ((hg_int32_t) (retval))
-);
-
-/// ADM_remove_adhoc_storage
-MERCURY_GEN_PROC(
-    ADM_remove_adhoc_storage_in_t,
-        ((hg_uint64_t) (server_id))
-);
-
-MERCURY_GEN_PROC(
-    ADM_remove_adhoc_storage_out_t,
-        ((hg_uint64_t) (op_id))
-        ((hg_int32_t) (retval))
-);
-
-/// ADM_deploy_adhoc_storage
-MERCURY_GEN_PROC(ADM_deploy_adhoc_storage_in_t, ((hg_uint64_t) (id)))
-
-MERCURY_GEN_PROC(ADM_deploy_adhoc_storage_out_t,
-        ((hg_uint64_t) (op_id))
-        ((hg_int32_t) (retval))
-);
-
-/// ADM_register_pfs_storage
-MERCURY_GEN_PROC(
-    ADM_register_pfs_storage_in_t,
-        ((hg_const_string_t)      (name))
-        ((ADM_pfs_storage_type_t) (type))
-        ((ADM_pfs_context_t)      (ctx))
-);
-
-MERCURY_GEN_PROC(
-    ADM_register_pfs_storage_out_t,
-        ((hg_uint64_t) (op_id))
-        ((hg_int32_t)  (retval))
-        ((hg_uint64_t) (id))
-);
-
-/// ADM_update_pfs_storage
-MERCURY_GEN_PROC(
-    ADM_update_pfs_storage_in_t,
-        ((ADM_pfs_context_t) (pfs_storage_ctx))
-        ((hg_uint64_t)       (server_id))
-);
-
-MERCURY_GEN_PROC(
-    ADM_update_pfs_storage_out_t,
-        ((hg_uint64_t) (op_id))
-        ((hg_int32_t)  (retval))
-);
-
-/// ADM_remove_pfs_storage
-MERCURY_GEN_PROC(
-    ADM_remove_pfs_storage_in_t,
-        ((hg_uint64_t) (server_id))
-);
-
-MERCURY_GEN_PROC(
-    ADM_remove_pfs_storage_out_t,
-        ((hg_uint64_t) (op_id))
-        ((hg_int32_t)  (retval))
-);
-
-/// ADM_input
-MERCURY_GEN_PROC(ADM_input_in_t,
-                 ((hg_const_string_t) (origin))((hg_const_string_t) (target)))
-
-MERCURY_GEN_PROC(ADM_input_out_t, ((int32_t) (ret)))
-
-/// ADM_output
-
-MERCURY_GEN_PROC(ADM_output_in_t,
-                 ((hg_const_string_t) (origin))((hg_const_string_t) (target)))
-
-MERCURY_GEN_PROC(ADM_output_out_t, ((int32_t) (ret)))
-
-/// ADM_inout
-
-MERCURY_GEN_PROC(ADM_inout_in_t,
-                 ((hg_const_string_t) (origin))((hg_const_string_t) (target)))
-
-MERCURY_GEN_PROC(ADM_inout_out_t, ((int32_t) (ret)))
-
-/// ADM_adhoc_context
-
-MERCURY_GEN_PROC(ADM_adhoc_context_in_t, ((hg_const_string_t) (context)))
-
-MERCURY_GEN_PROC(ADM_adhoc_context_out_t,
-                 ((int32_t) (ret))((int32_t) (adhoc_context)))
-
-/// ADM_adhoc_context_id
-
-MERCURY_GEN_PROC(ADM_adhoc_context_id_in_t, ((int32_t) (context_id)))
-
-MERCURY_GEN_PROC(ADM_adhoc_context_id_out_t, ((int32_t) (ret)))
-
-/// ADM_adhoc_nodes
-
-MERCURY_GEN_PROC(ADM_adhoc_nodes_in_t, ((int32_t) (nodes)))
-
-MERCURY_GEN_PROC(ADM_adhoc_nodes_out_t, ((int32_t) (ret)))
-
-/// ADM_adhoc_walltime
-
-MERCURY_GEN_PROC(ADM_adhoc_walltime_in_t, ((int32_t) (walltime)))
-
-MERCURY_GEN_PROC(ADM_adhoc_walltime_out_t, ((int32_t) (ret)))
-
-
-/// ADM_adhoc_access
-
-MERCURY_GEN_PROC(ADM_adhoc_access_in_t, ((hg_const_string_t) (access)))
-
-MERCURY_GEN_PROC(ADM_adhoc_access_out_t, ((int32_t) (ret)))
-
-/// ADM_adhoc_distribution
-
-MERCURY_GEN_PROC(ADM_adhoc_distribution_in_t,
-                 ((hg_const_string_t) (data_distribution)))
-
-MERCURY_GEN_PROC(ADM_adhoc_distribution_out_t, ((int32_t) (ret)))
-
-/// ADM_adhoc_background_flush
-
-MERCURY_GEN_PROC(ADM_adhoc_background_flush_in_t, ((hg_bool_t) (b_flush)))
-
-MERCURY_GEN_PROC(ADM_adhoc_background_flush_out_t, ((int32_t) (ret)))
-
-/// ADM_in_situ_ops
-
-MERCURY_GEN_PROC(ADM_in_situ_ops_in_t, ((hg_const_string_t) (in_situ)))
-
-MERCURY_GEN_PROC(ADM_in_situ_ops_out_t, ((int32_t) (ret)))
-
-/// ADM_in_transit_ops
-
-MERCURY_GEN_PROC(ADM_in_transit_ops_in_t, ((hg_const_string_t) (in_transit)))
-
-MERCURY_GEN_PROC(ADM_in_transit_ops_out_t, ((int32_t) (ret)))
-
-struct adm_qos_limit_list {
-    /** An array of QoS limits */
-    adm_qos_limit* l_limits;
-    /** The length of the array */
-    size_t l_length;
-};
-
-hg_return_t
-hg_proc_ADM_qos_limit_list_t(hg_proc_t proc, void* data);
-
-/// ADM_transfer_datasets
-
-MERCURY_GEN_PROC(
-    ADM_transfer_datasets_in_t,
-        ((ADM_job_t) (job))
-        ((ADM_dataset_list_t) (sources))
-        ((ADM_dataset_list_t) (targets))
-        ((ADM_qos_limit_list_t) (qos_limits))
-        ((hg_int32_t) (mapping))
-)
-
-MERCURY_GEN_PROC(
-    ADM_transfer_datasets_out_t,
-        ((hg_uint64_t) (op_id))
-        ((hg_int32_t) (retval))
-        ((ADM_transfer_t) (tx)))
-
-
-/// ADM_set_dataset_information
-
-MERCURY_GEN_PROC(ADM_set_dataset_information_in_t,
-                 ((int32_t) (resource_id))((hg_const_string_t) (info))(
-                         (int32_t) (job_id)))
-
-MERCURY_GEN_PROC(ADM_set_dataset_information_out_t,
-                 ((int32_t) (ret))((int32_t) (status)))
-
-/// ADM_set_io_resources
-
-MERCURY_GEN_PROC(ADM_set_io_resources_in_t,
-                 ((int32_t) (tier_id))((hg_const_string_t) (resources))(
-                         (int32_t) (job_id)))
-
-MERCURY_GEN_PROC(ADM_set_io_resources_out_t,
-                 ((int32_t) (ret))((int32_t) (status)))
-
-/// ADM_get_transfer_priority
-
-MERCURY_GEN_PROC(ADM_get_transfer_priority_in_t, ((int32_t) (transfer_id)))
-
-MERCURY_GEN_PROC(ADM_get_transfer_priority_out_t,
-                 ((int32_t) (ret))((int32_t) (priority)))
-
-/// ADM_set_transfer_priority
-
-MERCURY_GEN_PROC(ADM_set_transfer_priority_in_t,
-                 ((int32_t) (transfer_id))((int32_t) (n_positions)))
-
-MERCURY_GEN_PROC(ADM_set_transfer_priority_out_t,
-                 ((int32_t) (ret))((int32_t) (status)))
-
-/// ADM_cancel_transfer
-
-MERCURY_GEN_PROC(ADM_cancel_transfer_in_t, ((int32_t) (transfer_id)))
-
-MERCURY_GEN_PROC(ADM_cancel_transfer_out_t,
-                 ((int32_t) (ret))((int32_t) (status)))
-
-/// ADM_get_pending_transfers
-
-MERCURY_GEN_PROC(ADM_get_pending_transfers_in_t, ((hg_const_string_t) (value)))
-
-MERCURY_GEN_PROC(ADM_get_pending_transfers_out_t,
-                 ((int32_t) (ret))((hg_const_string_t) (pending_transfers)))
-
-/// ADM_set_qos_constraints
-
-MERCURY_GEN_PROC(
-        ADM_set_qos_constraints_in_t,
-        ((hg_const_string_t) (scope))((hg_const_string_t) (qos_class))(
-                (int32_t) (element_id))((hg_const_string_t) (class_value)))
-
-MERCURY_GEN_PROC(ADM_set_qos_constraints_out_t,
-                 ((int32_t) (ret))((int32_t) (status)))
-
-/// ADM_get_qos_constraints
-
-MERCURY_GEN_PROC(ADM_get_qos_constraints_in_t,
-                 ((hg_const_string_t) (scope))((int32_t) (element_id)))
-
-MERCURY_GEN_PROC(ADM_get_qos_constraints_out_t,
-                 ((int32_t) (ret))((hg_const_string_t) (list)))
-
-/// ADM_define_data_operation
-
-MERCURY_GEN_PROC(ADM_define_data_operation_in_t,
-                 ((hg_const_string_t) (path))((int32_t) (operation_id))(
-                         (hg_const_string_t) (arguments)))
-
-MERCURY_GEN_PROC(ADM_define_data_operation_out_t,
-                 ((int32_t) (ret))((int32_t) (status)))
-
-/// ADM_connect_data_operation
-
-MERCURY_GEN_PROC(ADM_connect_data_operation_in_t,
-                 ((int32_t) (operation_id))((hg_const_string_t) (input))(
-                         (hg_bool_t) (stream))((hg_const_string_t) (arguments))(
-                         (int32_t) (job_id)))
-
-MERCURY_GEN_PROC(ADM_connect_data_operation_out_t,
-                 ((int32_t) (ret))((hg_const_string_t) (data))(
-                         (hg_const_string_t) (operation_handle)))
-
-/// ADM_finalize_data_operation
-
-MERCURY_GEN_PROC(ADM_finalize_data_operation_in_t, ((int32_t) (operation_id)))
-
-MERCURY_GEN_PROC(ADM_finalize_data_operation_out_t,
-                 ((int32_t) (ret))((int32_t) (status)))
-
-
-/// ADM_link_transfer_to_data_operation
-
-MERCURY_GEN_PROC(ADM_link_transfer_to_data_operation_in_t,
-                 ((int32_t) (operation_id))((int32_t) (transfer_id))(
-                         (hg_bool_t) (stream))((hg_const_string_t) (arguments))(
-                         (int32_t) (job_id)))
-
-MERCURY_GEN_PROC(ADM_link_transfer_to_data_operation_out_t,
-                 ((int32_t) (ret))((hg_const_string_t) (operation_handle)))
-
-/// ADM_get_statistics
-
-MERCURY_GEN_PROC(ADM_get_statistics_in_t,
-                 ((int32_t) (job_id))((int32_t) (job_step)))
-
-MERCURY_GEN_PROC(ADM_get_statistics_out_t,
-                 ((int32_t) (ret))((hg_const_string_t) (job_statistics)))
-
-// clang-format on
-
-#ifdef __cplusplus
-};     // extern "C"
-#endif // __cplusplus
-
-#endif
-
-#endif // SCORD_PROTO_TYPES_HPP
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index cae7695205b365035be4bd2c9a8129c258b7e0e8..7690d0dc3366a3ec793abbc8562ea46e5a56ec4e 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -44,7 +44,7 @@ target_include_directories(
 
 target_link_libraries(
   libscord
-  PRIVATE common::network::rpc_client common::network::rpc_types
+  PRIVATE common::network::rpc_client
   PUBLIC tl::expected common::api::types
 )
 
diff --git a/src/lib/c_wrapper.cpp b/src/lib/c_wrapper.cpp
index 20d60ef27fd344d7cb171651529c1f7b4898ea11..8e9cd12ad85538cf4a3b2c228ca346502008031a 100644
--- a/src/lib/c_wrapper.cpp
+++ b/src/lib/c_wrapper.cpp
@@ -25,7 +25,6 @@
 #include <scord/scord.h>
 #include <scord/scord.hpp>
 #include <logger/logger.hpp>
-#include <net/proto/rpc_types.h>
 #include <stdarg.h>
 #include <scord/types.hpp>
 #include <scord/types.h>
diff --git a/src/lib/libscord.cpp b/src/lib/libscord.cpp
index b0ef7163fbab015bcdd99ed7c9c954c7ec294512..3d80dd3057e8335014e4bf7614d8900adfc4ea11 100644
--- a/src/lib/libscord.cpp
+++ b/src/lib/libscord.cpp
@@ -23,7 +23,6 @@
  *****************************************************************************/
 
 #include <scord/scord.hpp>
-#include <net/proto/rpc_types.h>
 #include <logger/logger.hpp>
 #include <utils/ctype_ptr.hpp>
 #include <env.hpp>
diff --git a/src/scord-ctl/CMakeLists.txt b/src/scord-ctl/CMakeLists.txt
index b06f68386f4443a69a9555412ac88888cae0677f..082d34efd8c1ee8587cf3925f7209115bc219cba 100644
--- a/src/scord-ctl/CMakeLists.txt
+++ b/src/scord-ctl/CMakeLists.txt
@@ -35,7 +35,7 @@ target_include_directories(
 
 target_link_libraries(
   scord-ctl PRIVATE common::config common::logger common::network::rpc_server
-                    common::network::rpc_types common::api::types fmt::fmt Boost::program_options
+                    common::api::types fmt::fmt Boost::program_options
 )
 
 install(TARGETS scord DESTINATION ${CMAKE_INSTALL_BINDIR})
diff --git a/src/scord/CMakeLists.txt b/src/scord/CMakeLists.txt
index 8278ec4ce2d455fcd758d37ae7b30575405c34f5..e83c50a6196554af51a5ec8629440fa57385cd6d 100644
--- a/src/scord/CMakeLists.txt
+++ b/src/scord/CMakeLists.txt
@@ -39,7 +39,6 @@ target_link_libraries(
   PRIVATE common::config
           common::logger
           common::network::rpc_server
-          common::network::rpc_types
           common::api::types
           common::utils
           common::abt_cxx