diff --git a/gtk2_ardour/ardour_image_compositor_socket.h b/gtk2_ardour/ardour_image_compositor_socket.h
index 6ed92ef..03f0086 100644
--- a/gtk2_ardour/ardour_image_compositor_socket.h
+++ b/gtk2_ardour/ardour_image_compositor_socket.h
@@ -46,6 +46,8 @@ namespace ardourvis
 	/** the number of characters used to for the size of the image data message */
 	const int32_t IMAGE_DATA_MESSAGE_SIZE_CHARS = 32 ;
 
+	/** the number of characters in a return/reply message */
+	const int32_t RETURN_MSG_SIZE = 3 ;
 	// ------------------------------------------------------------------------- //
 	// Main Actions
 	// we join the action chars with items to create the message
diff --git a/gtk2_ardour/imageframe_socket_handler.cc b/gtk2_ardour/imageframe_socket_handler.cc
index 1b0250b..f92b378 100644
--- a/gtk2_ardour/imageframe_socket_handler.cc
+++ b/gtk2_ardour/imageframe_socket_handler.cc
@@ -316,8 +316,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_removed(const string & track_
 	send_message(msgBuffer.str()) ;
 
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 		
 /**
@@ -357,8 +356,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_renamed(const string & new_id
 	send_message(msgBuffer.str()) ;
 
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 
 //------------------------
@@ -393,8 +391,7 @@ ImageFrameSocketHandler::send_marker_time_axis_removed(const string & track_id,
 	send_message(msgBuffer.str()) ;
 
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 		
 /**
@@ -434,8 +431,7 @@ ImageFrameSocketHandler::send_marker_time_axis_renamed(const string & new_id, co
 	send_message(msgBuffer.str()) ;
 	
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 
 //---------------------------------
@@ -476,8 +472,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_group_removed(const string &
 	send_message(msgBuffer.str()) ;
 
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 
 /**
@@ -521,8 +516,7 @@ ImageFrameSocketHandler::send_imageframe_time_axis_group_renamed(const string &
 	send_message(msgBuffer.str()) ;
 	
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 
 
@@ -561,8 +555,7 @@ ImageFrameSocketHandler::send_imageframe_view_position_change(nframes_t pos, voi
 	send_message(msgBuffer.str()) ;
 	
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 		
 /**
@@ -596,8 +589,7 @@ ImageFrameSocketHandler::send_imageframe_view_duration_change(nframes_t dur, voi
 	send_message(msgBuffer.str()) ;
 	
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 		
 /**
@@ -632,8 +624,7 @@ ImageFrameSocketHandler::send_imageframe_view_renamed(const string & new_id, con
 	send_message(msgBuffer.str()) ;
 	
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 		
 /**
@@ -669,8 +660,7 @@ ImageFrameSocketHandler::send_imageframe_view_removed(const string & item_id, vo
 	send_message(msgBuffer.str()) ;
 
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 
 
@@ -709,8 +699,7 @@ ImageFrameSocketHandler::send_marker_view_position_change(nframes_t pos, void* s
 	send_message(msgBuffer.str()) ;
 
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 		
 /**
@@ -742,8 +731,7 @@ ImageFrameSocketHandler::send_marker_view_duration_change(nframes_t dur, void* s
 	send_message(msgBuffer.str()) ;
 
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }	
 
 		
@@ -780,8 +768,7 @@ ImageFrameSocketHandler::send_marker_view_renamed(const string & new_id, const s
 	send_message(msgBuffer.str()) ;
 	
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 		
 /**
@@ -815,8 +802,7 @@ ImageFrameSocketHandler::send_marker_view_removed(const string & item_id, void*
 	send_message(msgBuffer.str()) ;
 
 	// XXX should do something with the return
-	std::string retmsg ;
-	read_message(retmsg) ;
+	read_result();
 }
 
 
@@ -2323,6 +2309,25 @@ ImageFrameSocketHandler::read_message(std::string& msg)
 	return(retcode) ;
 }
 
+/**
+ * Reads a reply message ("RT0"/"RT1") from the Socket
+ *
+ * @return true if "RT0" was received,, otherwise false
+ */
+bool
+ImageFrameSocketHandler::read_result()
+{
+	char buf[(ardourvis::RETURN_MSG_SIZE)+1] ;
+	int retcode = ::recv(theArdourToCompositorSocket, buf, ardourvis::RETURN_MSG_SIZE, 0) ;
+	buf[ardourvis::RETURN_MSG_SIZE]='\0';
+	if (retcode > 0) {
+	  std::cout << "Received Result [" << buf << "]\n" ;
+	  if (retcode == ardourvis::RETURN_MSG_SIZE && buf == ardourvis::RETURN_TRUE) {
+	    return (true);
+	  }
+	}
+	return(false) ;
+}
 
 /**
  * Convenience method to string_compose and send a success messasge back to the Image Compositor
diff --git a/gtk2_ardour/imageframe_socket_handler.h b/gtk2_ardour/imageframe_socket_handler.h
index 3a87f5b..0835f18 100644
--- a/gtk2_ardour/imageframe_socket_handler.h
+++ b/gtk2_ardour/imageframe_socket_handler.h
@@ -669,6 +669,13 @@ class ImageFrameSocketHandler : public sigc::trackable
 		 * @return the return value from the socket call
 		 */
 		int read_message(std::string& msg) ;
+
+		/**
+		 * Reads a return message ("RT0"/"RT1") from the Socket
+		 *
+		 * @return true if "RT0" was received,, otherwise false
+		 */
+		bool read_result();
 		
 		/**
 		 * Convenience method to compose and send a success messasge back to the Image Compositor
