code: func (fw *Framework) NewReplyTransportForMessage(msg *Message, request protocol.Request) (protocol.TransportMessage, error) {
  	reply, err := fw.NewReply(request)
  	if err != nil {
  		return nil, fmt.Errorf("Could not create Reply: %s", err)
  	}
  
  	reply.SetMessage(msg.Payload)
  
  	sreply, err := fw.NewSecureReply(reply)
  	if err != nil {
  		return nil, fmt.Errorf("Could not create Secure Reply: %s", err)
  	}
  
  	transport, err := fw.NewTransportForSecureReply(sreply)
  	if err != nil {
  		return nil, fmt.Errorf("Could not create Transport: %s", err)
  	}
  
  	protocol.CopyFederationData(request, transport)
  
  	return transport, nil
  }
docs: // NewReplyTransportForMessage creates a new Transport message based on a Message and the request its a reply to
  //
  // The new transport message will have the same version as the request its based on