diff --git a/mediachanger/IoTest.cpp b/mediachanger/IoTest.cpp
index 705e23c424ddbcce6d88a3b37c0dfb8743d91a85..6b0705716a4a54d1e484983631d0c07db69c3b38 100644
--- a/mediachanger/IoTest.cpp
+++ b/mediachanger/IoTest.cpp
@@ -24,7 +24,6 @@
 #include "common/exception/Errnum.hpp"
 #include "common/SmartFd.hpp"
 #include "mediachanger/io.hpp"
-#include "mediachanger/marshall.h"
 
 #include <fcntl.h>
 #include <gtest/gtest.h>
@@ -197,18 +196,6 @@ TEST_F(cta_mediachanger_IoTest, marshalUint8) {
   ASSERT_EQ(0x87 & 0xFF, buf[0] & 0xFF);
 }
 
-TEST_F(cta_mediachanger_IoTest, marshall_BYTE) {
-  const uint8_t v = 0x87;
-  char buf[1];
-  char *ptr = buf;
-
-  memset(buf, '\0', sizeof(buf));
-
-  marshall_BYTE(ptr, v);
-  ASSERT_EQ(buf+1, ptr);
-  ASSERT_EQ(0x87 & 0xFF, buf[0] & 0xFF);
-}
-
 static void check16BitsWereMarshalledBigEndian(const char *const buf) {
   ASSERT_EQ(0x87 & 0xFF, buf[0] & 0xFF);
   ASSERT_EQ(0x65 & 0xFF, buf[1] & 0xFF);
@@ -238,18 +225,6 @@ TEST_F(cta_mediachanger_IoTest, marshalUint16) {
   check16BitsWereMarshalledBigEndian(buf);
 }
 
-TEST_F(cta_mediachanger_IoTest, marshall_SHORT) {
-  const uint16_t v = 0x8765;
-  char buf[2];
-  char *ptr = buf;
-
-  memset(buf, '\0', sizeof(buf));
-
-  marshall_SHORT(ptr, v);
-  ASSERT_EQ(buf+2, ptr);
-  check16BitsWereMarshalledBigEndian(buf);
-}
-
 static void check32BitsWereMarshalledBigEndian(const char *const buf) {
   ASSERT_EQ(0x87 & 0xFF, buf[0] & 0xFF);
   ASSERT_EQ(0x65 & 0xFF, buf[1] & 0xFF);
@@ -281,18 +256,6 @@ TEST_F(cta_mediachanger_IoTest, marshalUint32) {
   check32BitsWereMarshalledBigEndian(buf);
 }
 
-TEST_F(cta_mediachanger_IoTest, marshall_LONG) {
-  const uint32_t v = 0x87654321;
-  char buf[4];
-  char *ptr = buf;
-
-  memset(buf, '\0', sizeof(buf));
-
-  marshall_LONG(ptr, v);
-  ASSERT_EQ(buf+4, ptr);
-  check32BitsWereMarshalledBigEndian(buf);
-}
-
 static void check64BitsWereMarshalledBigEndian(const char *const buf) {
   ASSERT_EQ(0x88 & 0xFF, buf[0] & 0xFF);
   ASSERT_EQ(0x77 & 0xFF, buf[1] & 0xFF);
@@ -316,22 +279,6 @@ TEST_F(cta_mediachanger_IoTest, marshalUint64) {
   check64BitsWereMarshalledBigEndian(buf);
 }
 
-// The following test MUST call check64BitsWereMarshalledBigEndian() like
-// the marshalUint64 test above in order to prove that the new C++
-// marshalling code of castor::io is compatible with that of the legacy
-// code found in h/mashall.h
-TEST_F(cta_mediachanger_IoTest, marshall_HYPER) {
-  const uint64_t v = 0x8877665544332211LL;
-  char buf[8];
-  char *ptr = buf;
-
-  memset(buf, '\0', sizeof(buf));
-
-  marshall_HYPER(ptr, v);
-  ASSERT_EQ(buf+8, ptr);
-  check64BitsWereMarshalledBigEndian(buf);
-}
-
 static void checkStringWasMarshalled(const char *const buf) {
   ASSERT_EQ('V', buf[0]);
   ASSERT_EQ('a', buf[1]);
@@ -355,18 +302,6 @@ TEST_F(cta_mediachanger_IoTest, marshalString) {
   checkStringWasMarshalled(buf);
 }
 
-TEST_F(cta_mediachanger_IoTest, marshall_STRING) {
-  const char *const v = "Value";
-  char buf[8];
-  char *ptr = buf;
-
-  memset(buf, 'E', sizeof(buf));
-
-  marshall_STRING(ptr, v);
-  ASSERT_EQ(buf+6, ptr);
-  checkStringWasMarshalled(buf);
-}
-
 TEST_F(cta_mediachanger_IoTest, unmarshalUint8) {
   char buf[] = {'\x87'};
   size_t bufLen = sizeof(buf);
@@ -378,15 +313,6 @@ TEST_F(cta_mediachanger_IoTest, unmarshalUint8) {
   ASSERT_EQ(0x87, v);
 }
 
-TEST_F(cta_mediachanger_IoTest, unmarshall_BYTE) {
-  char buf[] = {'\x87'};
-  const char *ptr = buf;
-  uint8_t v = 0;
-  unmarshall_BYTE(ptr, v);
-  ASSERT_EQ(buf+1, ptr);
-  ASSERT_EQ(0x87, v);
-}
-
 TEST_F(cta_mediachanger_IoTest, unmarshalInt16) {
   char buf[] = {'\x87', '\x65'};
   size_t bufLen = sizeof(buf);
@@ -409,15 +335,6 @@ TEST_F(cta_mediachanger_IoTest, unmarshalUint16) {
   ASSERT_EQ((uint16_t)0x8765, v);
 }
 
-TEST_F(cta_mediachanger_IoTest, unmarshall_SHORT) {
-  char buf[] = {'\x87', '\x65'};
-  const char *ptr = buf;
-  uint16_t v = 0;
-  unmarshall_SHORT(ptr, v);
-  ASSERT_EQ(buf+2, ptr);
-  ASSERT_EQ((uint16_t)0x8765, v);
-}
-
 TEST_F(cta_mediachanger_IoTest, unmarshalUint32) {
   char buf[] = {'\x87', '\x65', '\x43', '\x21'};
   size_t bufLen = sizeof(buf);
@@ -429,15 +346,6 @@ TEST_F(cta_mediachanger_IoTest, unmarshalUint32) {
   ASSERT_EQ((uint32_t)0x87654321, v);
 }
 
-TEST_F(cta_mediachanger_IoTest, unmarshall_LONG) {
-  char buf[] = {'\x87', '\x65', '\x43', '\x21'};
-  const char *ptr = buf;
-  uint32_t v = 0;
-  unmarshall_LONG(ptr, v);
-  ASSERT_EQ(buf+4, ptr);
-  ASSERT_EQ((uint32_t)0x87654321, v);
-}
-
 TEST_F(cta_mediachanger_IoTest, unmarshalInt32) {
   char buf[] = {'\x87', '\x65', '\x43', '\x21'};
   size_t bufLen = sizeof(buf);
@@ -460,18 +368,6 @@ TEST_F(cta_mediachanger_IoTest, unmarshalUint64) {
   ASSERT_EQ((uint64_t)0x8877665544332211LL, v);
 }
 
-// The following test MUST be the same as the unmarshalUint64 test above in
-// order to prove that the new C++ un-marshalling code of castor::io is
-// compatible with that of the legacy code found in h/mashall.h
-TEST_F(cta_mediachanger_IoTest, unmarshall_HYPER) {
-  char buf[] = {'\x88', '\x77', '\x66', '\x55', '\x44', '\x33', '\x22', '\x11'};
-  const char *ptr = buf;
-  uint64_t v = 0;
-  unmarshall_HYPER(ptr, v);
-  ASSERT_EQ(buf+8, ptr);
-  ASSERT_EQ((uint64_t)0x8877665544332211LL, v);
-}
-
 TEST_F(cta_mediachanger_IoTest, unmarshalString) {
   char src[] = {'V', 'a', 'l', 'u', 'e', '\0', 'E', 'E'};
   size_t srcLen = sizeof(src);
@@ -485,14 +381,4 @@ TEST_F(cta_mediachanger_IoTest, unmarshalString) {
   ASSERT_EQ(std::string("Value"), std::string(dst));
 }
 
-TEST_F(cta_mediachanger_IoTest, unmarshall_STRING) {
-  char src[] = {'V', 'a', 'l', 'u', 'e', '\0', 'E', 'E'};
-  const char *srcPtr = src;
-  char dst[6];
-
-  unmarshall_STRING(srcPtr, dst);
-  ASSERT_EQ(src+6, srcPtr);
-  ASSERT_EQ(std::string("Value"), std::string(dst));
-}
-
 } // namespace unitTests
diff --git a/mediachanger/marshall.h b/mediachanger/marshall.h
deleted file mode 100644
index 17b4330372a6695a06e1993ac1c5648dc8b614e6..0000000000000000000000000000000000000000
--- a/mediachanger/marshall.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * $Id: marshall.h,v 1.15 2005/02/22 13:28:13 jdurand Exp $
- */
-
-/*
- */
-
-/*
- * Copyright (C) 1990-2002 by CERN/IT/PDP/DM
- * All rights reserved
- */
-
-/*  marshall.h   -   marshalling/unmarshalling definitions */
-
-#pragma once
-
-#include <memory.h>             /* memory operations definition         */
-#include <arpa/inet.h>
-
-// Imported old stuff needed by marshal_XXX macros
-
-typedef unsigned char   U_BYTE;
-typedef unsigned short  U_SHORT;
-typedef unsigned int    U_LONG;
-typedef          char   BYTE;
-typedef          short  WORD;
-typedef          int    LONG;
-typedef uint64_t U_HYPER;
-
-#define BYTEADDR(x)     (((char *)&(x))+sizeof(BYTE)-BYTESIZE)
-#define BYTESIZE        1
-
-#define SHORT			WORD
-/* #define U_SHORT			U_WORD */
-#define WORDSIZE        2
-#define WORDADDR(x)     (((char *)&(x))+sizeof(WORD)-WORDSIZE)
-
-#define SHORTSIZE		WORDSIZE
-#define SHORTADDR		WORDADDR
-
-#define LONGSIZE        4
-#define LONGADDR(x)     (((char *)&(x))+sizeof(LONG)-LONGSIZE)
-
-#define marshall_WORD		marshall_SHORT
-#define unmarshall_WORD		unmarshall_SHORT		
-
-#define INC_PTR(ptr,n)		(ptr) = (char*)(ptr) + (n)
-#define DIFF_PTR(ptr,base)      (char*)(ptr) - (char*)(base)
-
-/*
- * BIT manipulation
- */
-
-#define  BITSOFBYTE     8       /* number of bits in a byte             */
-
-#define  bitsof(t)      sizeof(t)*BITSOFBYTE /* number of bits in a type*/
-
-
-/*
- *  Set the bit 'bit-th' starting from the byte pointed to by 'ptr'
- */
-
-#define  BIT_SET(ptr,bit)	{ char *p = (char*)(ptr) + (bit)/8; \
-				  *p = *p | (1 << (7-(bit)%8)) ; \
-				}
-
-/*
- *  Clear the bit 'bit-th' starting from the byte pointed to by 'ptr'
- */
-
-#define  BIT_CLR(ptr,bit)	{ char *p = (char*)(ptr) + (bit)/8; \
-				  *p = *p & ~(1 << (7-(bit)%8)); \
-				}
-
-/*
- *  Test the bit 'bit-th' starting from the byte pointed to by 'ptr'
- */
-
-#define  BIT_ISSET(ptr,bit)	(*(char*)((char*)(ptr)+(bit)/8) & (1 << (7-(bit)%8)))
-
-
-/*
- *    B Y T E
- */
-
-#define marshall_BYTE(ptr,n)	{ BYTE n_ = n; \
-				  (void) memcpy((ptr),BYTEADDR(n_),BYTESIZE); \
-				  INC_PTR(ptr,BYTESIZE); \
-				} 
-
-#define unmarshall_BYTE(ptr,n)  { BYTE n_ = 0; \
-				  (void) memcpy(BYTEADDR(n_),(ptr),BYTESIZE); \
-				  n = n_; \
-				  INC_PTR(ptr,BYTESIZE); \
-				} 
-
-/*
- *    S H O R T
- */
-
-#define marshall_SHORT(ptr,n)	{ SHORT n_ = htons((unsigned short)(n)); \
-				  (void) memcpy((ptr),SHORTADDR(n_),SHORTSIZE); \
-				  INC_PTR(ptr,SHORTSIZE); \
-				}
-                                                                 
-#define unmarshall_SHORT(ptr,n)	{ SHORT n_ = 0;  \
-				  (void) memcpy(SHORTADDR(n_),(ptr),SHORTSIZE); \
-                                  n = ntohs((unsigned short)(n_)); \
-				  if ( BIT_ISSET(ptr,0) && sizeof(SHORT)-SHORTSIZE > 0 ) \
-					 (void) memset((char *)&n,255,sizeof(SHORT)-SHORTSIZE); \
-				  INC_PTR(ptr,SHORTSIZE); \
-				}
-
-/*
- *    L O N G
- */
-
-#define marshall_LONG(ptr,n)	{ LONG n_ = htonl((unsigned long)(n)); \
-				  (void) memcpy((ptr),LONGADDR(n_),LONGSIZE); \
-				  INC_PTR(ptr,LONGSIZE); \
-				}
-                                                                 
-#define unmarshall_LONG(ptr,n)	{ LONG n_ = 0;  \
-				  (void) memcpy(LONGADDR(n_),(ptr),LONGSIZE); \
-                                  n = ntohl((unsigned long)(n_)); \
-				  if ( BIT_ISSET(ptr,0) && sizeof(LONG)-LONGSIZE > 0 ) \
-					 (void) memset((char *)&n,255,sizeof(LONG)-LONGSIZE); \
-				  INC_PTR(ptr,LONGSIZE); \
-				}
-
-/*
- *    S T R I N G
- */
-
-#define  marshall_STRING(ptr,str)       {  (void) strcpy((char*)(ptr),(char*)(str)); \
-					   INC_PTR(ptr,strlen(str)+1); \
-					}
-
-#define  marshall_STRINGN(ptr,str,n)    {  (void) strncpy((char*)(ptr),(char*)(str),n); \
-                                           ((char*)(ptr))[n-1] = 0;                     \
-                                           if (strlen(str)+1 > n)                       \
-                                             INC_PTR(ptr,n);                            \
-                                           else                                         \
-                                             INC_PTR(ptr,strlen(str)+1);                \
-                                        }
-
-#define  unmarshall_STRING(ptr,str)     { (void) strcpy((char*)(str),(char*)(ptr)); \
-					  INC_PTR(ptr,strlen(str)+1); \
-					}
-
-extern "C" int _unmarshall_STRINGN (char **, char*, int);
-#define  unmarshall_STRINGN(ptr,str,n)  _unmarshall_STRINGN(&ptr, str, n)
-
-/*
- *    H Y P E R   ( 6 4   B I T S )
- */
-
-#define  marshall_HYPER(ptr,n)          { U_HYPER u_ = n; \
-					  LONG n_ = htonl(*((U_LONG *)((char *)&(u_)+LONGSIZE))); \
-					  (void) memcpy((ptr),LONGADDR(n_),LONGSIZE); \
-					  INC_PTR(ptr,LONGSIZE); \
-					  n_ = htonl(*((U_LONG *)&(u_))); \
-					  (void) memcpy((ptr),LONGADDR(n_),LONGSIZE); \
-					  INC_PTR(ptr,LONGSIZE); \
-					}
-
-#define  unmarshall_HYPER(ptr,n)        { U_HYPER u_ = 0; \
-					  LONG n_ = 0;  \
-					  (void) memcpy(LONGADDR(n_),(ptr),LONGSIZE); \
-					  *((LONG *)((char *)&(u_)+LONGSIZE)) = \
-						ntohl((U_LONG)(n_)); \
-					  INC_PTR(ptr,LONGSIZE); \
-					  n_ = 0;  \
-					  (void) memcpy(LONGADDR(n_),(ptr),LONGSIZE); \
-					  *((LONG *)&(u_)) = ntohl((U_LONG)(n_)); \
-					  INC_PTR(ptr,LONGSIZE); \
-					  n = u_; \
-					}
-
-/*
- *    O P A Q U E
- */
-
-#define marshall_OPAQUE(ptr,raw,n)	{ (void) memcpy((ptr),(raw),(n)); \
-					  INC_PTR(ptr,(n)); \
-					}
-
-#define unmarshall_OPAQUE(ptr,raw,n)	{ (void) memcpy((raw),(ptr),(n)); \
-					  INC_PTR(ptr,(n)); \
-					}
-
-/*
- *    T I M E
- */
-
-#define  marshall_TIME_T(ptr,n)       {  \
-					   TIME_T _marshall_time_dummy = (TIME_T) n; \
-					   marshall_HYPER(ptr,_marshall_time_dummy); \
-					}
-
-#define  unmarshall_TIME_T(ptr,n)     { \
-					   TIME_T _unmarshall_time_dummy; \
-					   unmarshall_HYPER(ptr,_unmarshall_time_dummy); \
-					   n = (time_t) _unmarshall_time_dummy; \
-					}
-