diff --git a/eos/messages/eos_messages.proto b/eos/messages/eos_messages.proto
index 6c2d6280e66c88a798a149a7ed3b693d0020f62e..e9dea6db05216b57f62f4beabea9ac3b5ca3a8be 100644
--- a/eos/messages/eos_messages.proto
+++ b/eos/messages/eos_messages.proto
@@ -1,6 +1,11 @@
 syntax  = "proto3";
 package eos.wfe;
 
+message Clock {
+  uint64 sec                 = 1;       //< seconds of a clock
+  uint64 nsec                = 2;       //< nanoseconds of a clock
+}
+
 message Checksum {
   string value               = 1;       //< checksum value
   string name                = 2;       //< checksum name
@@ -19,11 +24,6 @@ message Id {
   string groupname           = 4;       //< group name
 }
 
-message Clock {
-  uint64 sec                 = 1;       //< seconds of a clock
-  uint64 nsec                = 2;       //< nanoseconds of a clock
-}
-
 message Metadata {
   uint64 fid                 = 1;       //< file/container id
   uint64 pid                 = 2;       //< parent id
@@ -97,44 +97,46 @@ message Xattr {
 }
 
 message Tapereplica {
-   enum Status { NONE = 0; OFFTAPE = 1; ONTAPE = 2; ONTAPESAVE = 3; }
-   uint64 fid                = 1;       //< file  id
-   Status status             = 2;       //< state state for file ID
-   uint64 size               = 3;       //< File size as recorded on tape for cross check
-   Checksum cks              = 4;       //< File checksum as computer while writing to tape
+  enum Status { NONE = 0; OFFTAPE = 1; ONTAPE = 2; ONTAPESAVE = 3; }
+  uint64 fid                 = 1;       //< file id
+  Status status              = 2;       //< status for file id
+  uint64 size                = 3;       //< File size as recorded on tape, for cross-check
+  Checksum cks               = 4;       //< File checksum as computer while writing to tape
+}
+
+message Response {
+  enum ResponseType { XATTR_RSP = 0; TAPEREPLICA_RSP = 1; }
+  ResponseType rsp_type      = 1;       //< Encode the type of this reply
+  oneof response {
+    Xattr xattr              = 2;       //< Payload for Xattr response type
+    Tapereplica tapereplica  = 3;       //< Payload for Tapereplica response type
+  }
 }
 
-message Error {
+
+
+//
+// Error handling
+//
+
+// Message type for the Alert callback (generates a log message or response for the user)
+
+message Alert {
+  // What is the purpose of Audience NONE?
   enum Audience { NONE = 0; EOSLOG = 1; ENDUSER = 2; }
   Audience audience          = 1;       //< The intended audience of the error message
   uint64 code                = 2;       //< Zero means success, non-zero means error
   string message             = 3;       //< An empty if success, else an error message
 }
 
-// The following message is used to wrap all messages sent between EOS and its
-// peers.
-//
-// This wrapper message allows new message types to be added to the protocol in
-// the future.
-//
-// This wrapper message also allows EOS peers to receive non-EOS messages as
-// long as the following two conditions are met:
-// 1. The peer uses a wrapper message with exactly the same (simple) structure.
-// 2. No two message types use the same numeric tag value.
-//
-// The structure of this message is based on the "Union Types" section of the
-// following Google protocol buffers web page:
-//
-//     https://developers.google.com/protocol-buffers/docs/techniques
-//
-// A protocol buffer parser cannot determine a message type based solely on its
-// contents. The type field of this wrapper message provides the required
-// metadata.
-message Wrapper {
-  enum Type {NONE = 0; ERROR = 1; NOTIFICATION = 2; XATTR = 3; TAPEREPLICA = 4; }
-  Type type  = 1;
-  Error error  = 2;
-  Notification notification  = 3;
-  Xattr xattr  = 4;
-  Tapereplica tapereplica  = 5;
+// Message type for the Error callback (throws an exception)
+
+message Exception {
+  enum ErrorCode {
+    SERVER_NO_RSP = 0;                  //< No response from server
+    PB_PARSE_ERR  = 1;                  //< Protocol buffer parse error
+    // ... define other exception types
+  }
+  ErrorCode error            = 1;       //< Defines what went wrong
 }
+
diff --git a/xroot_plugins/CMakeLists.txt b/xroot_plugins/CMakeLists.txt
index 6ccb3f8d6209a3b78845483150326282cd1e140f..4a7a8165d65d5634e4c15a45c90e2089b93dedd7 100644
--- a/xroot_plugins/CMakeLists.txt
+++ b/xroot_plugins/CMakeLists.txt
@@ -24,7 +24,8 @@ include_directories(${CMAKE_SOURCE_DIR}/tapeserver)
 
 find_package(Protobuf3 REQUIRED)
 include_directories(${PROTOBUF3_INCLUDE_DIRS})
-add_library (XrdCtaOfs MODULE ListArchiveFilesCmd.cpp XrdCtaFilesystem.cpp XrdCtaFile.cpp XrdCtaDir.cpp)
+#add_library (XrdCtaOfs MODULE ListArchiveFilesCmd.cpp XrdCtaFilesystem.cpp XrdCtaFile.cpp XrdCtaDir.cpp)
+add_library (XrdCtaOfs MODULE ListArchiveFilesCmd.cpp XrdCtaFile.cpp XrdCtaDir.cpp)
 target_link_libraries (XrdCtaOfs ctacatalogue ctaeosmessages ctascheduler ctacommon ${PROTOBUF3_LIBRARIES} ctaobjectstore cryptopp)
 set_target_properties(XrdCtaOfs PROPERTIES INSTALL_RPATH ${PROTOBUF3_RPATH})
 
@@ -49,6 +50,6 @@ set (WRITE_NOTIFICATION_MSG_CMD_SRC_FILES
   WriteNotificationMsgCmdLineArgs.cpp
   WriteNotificationMsgCmdMain.cpp)
 
-add_executable (cta-xrootd_plugins-write-notification-msg ${WRITE_NOTIFICATION_MSG_CMD_SRC_FILES})
-add_dependencies (cta-xrootd_plugins-write-notification-msg generate_notification.pb.h)
-target_link_libraries (cta-xrootd_plugins-write-notification-msg ctacommon ctaeosmessages)
+#add_executable (cta-xrootd_plugins-write-notification-msg ${WRITE_NOTIFICATION_MSG_CMD_SRC_FILES})
+#add_dependencies (cta-xrootd_plugins-write-notification-msg generate_notification.pb.h)
+#target_link_libraries (cta-xrootd_plugins-write-notification-msg ctacommon ctaeosmessages)