Recently, I suggested there should be serialization support wrt the Range library - http://lists.boost.org/Archives/boost/2008/01/132294.php. Msgs @out (sub_range >) } to the C++ Middleware Writer results in this output: void Msgs::Marshal (SendBuffer& buf , sub_range > const& abt1 ) { Counter cntr(msg_length_max); cntr.Add(sizeof(int)); cntr.MultiplyAndAdd(boost::distance(abt1), sizeof(int32_t)); buf.Receive(&cntr.value_, sizeof(cntr.value_)); buf.Receive32(boost::distance(abt1)); list::const_iterator rit2 = abt1.begin(); list::const_iterator r_end2 = abt1.end(); for (; rit2 != r_end2; ++rit2) { buf.Receive(&(*rit2), sizeof(int32_t)); } } The @out used above as input to the C++ Middleware Writer indicates you only want a Marshal function--by default both a Marshal and Receive function are generated. I believe sub_range supports operator << but not operator >>. So the @out option is necessary when using sub_range. A container could be used to receive data sent via the above Marshal function; as Middle code it would look something like this: Msgs @out (sub_range >) @in (vector) } Brian Wood Ebenezer Enterprises www.webebenezer.net Keep your heart with all diligence; for out of it are the issues of life. Proverbs 4:23