override public IAsyncResult BeginSubmitSyncMessage(
			IBaseMessage					message, 
			AsyncCallback					cb, 
			Object							asyncState)
		{
			if ( false == _initialized )
			{
				InternalInitialize(null, message, null);
			}

			Guid ct = Guid.NewGuid();
			string correlationToken = ct.ToString();

			EpmAsyncResult ar = new EpmAsyncResult(cb, asyncState);
			ResponseCallback responseCallback = new ResponseCallback(ar.BatchCallback, _tp);
			ar.ResponseCallback = responseCallback;

			// Get a new Transport Proxy Batch
			IBTTransportBatch batch = _tp.GetBatch( ar.BatchCallback, null );

			// Submit the message
			batch.SubmitRequestMessage( message, correlationToken, true, new DateTime(0), responseCallback );

			// Commit the batch
			batch.Done( null );

			return ar;
		}
		override public IAsyncResult BeginSubmitMessages(
			IBaseMessage[]					messages, 
			AsyncCallback					cb, 
			Object							asyncState)
		{
			if ( false == _initialized )
			{
				InternalInitialize(null, messages[0], null);
			}

			EpmAsyncResult ar = new EpmAsyncResult(cb, asyncState);
			// Get a new Transport Proxy Batch
			IBTTransportBatch batch = _tp.GetBatch( ar.BatchCallback, null );

			for ( int c = 0; c < messages.Length; c++ )
			{
				// Submit the message
				batch.SubmitMessage( messages[c] );
			}

			// Commit the batch
			batch.Done( null );

			return ar;
		}