public net.tinyos.message.Message toTOSMsg() {
    AgillaTSReqMsg msg = new AgillaTSReqMsg();

    msg.set_dest(dest);
    msg.set_reply(reply);
    msg.set_op(op);

    msg.set_template_flags(template.flags());
    msg.set_template_size(template.getSize());

    short dataIndex = 0;
    for (int i = 0; i < template.size(); i++) {
      AgillaStackVariable sv = template.getField(i);
      short[] bytes = sv.toBytes();
      msg.setElement_template_data(dataIndex++, sv.getType()); // save type
      for (int j = 0; j < sv.getSize(); j++) {
        msg.setElement_template_data(dataIndex++, bytes[j]); // save var
      }
    }
    return msg;
  }