Advanced Wireless Communications and Mobile Computing Technologies for the Internet of ThingsView this Special Issue
A High Throughput Anticollision Protocol to Decrease the Energy Consumption in a Passive RFID System
One of the main existing problems in Radio Frequency Identification (RFID) technology is the tag collision problem. When several tags try to respond to the reader under the coverage of the same reader antenna their messages collide, degrading bandwidth and increasing the number of transmitted bits. An anticollision protocol, based on the classical Binary Tree (BT) protocol, with the ability to decrease the number of bits transmitted by the reader and the tags, is proposed here. Simulations results show that the proposed protocol increases the throughput with respect to other recent state-of-the-art protocols while keeping a low energy consumption of a passive RFID system.
The Radio Frequency Identification (RFID) technology use is being increased in applications where autoidentification methods are needed [1–5]. RFID is used to identify codes stored in devices, called tags, using radio frequency waves. These tags are attached to different objects which can be identified without an existing line of sight. RFID is a low intrusive technology which can be easily adapted to the Internet of Things .
An RFID system is basically composed of two elements: a reader and one or more tags. The reader is an electronic device with a RF module, a control unit, and one or more antennas which establish a bidirectional communication with the second device, the tags; tags include an IC-chip and an antenna and are attached to the object to be identified. Tags can be active (battery-powered) or passive (obtain power from reader’s signal). Passive tags are widely used due to their low price and the absence of batteries; however, they have a lower coverage than the active ones. This paper is focused on passive RFID systems consisting of a reader and different numbers of passive tags.
Typically, an RFID system may contain several tags coexisting and transmitting to the reader at the same time using the same channel (the air). This fact can cause the cancellation of tags’ responses. The reader may not be able to decode their waveforms and tags will be forced to retransmit their messages causing a decrease in the time needed to be identified and an increase in the energy consumed by the reader. This problem is called the tag collision problem .
This problem is faced using anticollision protocols. Several protocols are presented in the literature and can be mainly classified into Aloha based and tree based protocols . Aloha based protocols, classified as probabilistic since tags’ responses, are randomly organized and distribute responses among slots. The current standard EPC global Class 1 Gen 2  belongs to this category. Research in these types of protocols is focused on the optimal distribution of tags’ responses in a timeline. Tree based protocols, on the other hand, are classified as deterministic since they are supposed to read all the tags in the interrogation zone . These protocols usually split the set of tags upon collisions until achieving a successful response from all the tags; however, some recent solutions provide an estimation phase to define initial subsets which are easier to be identified by the reader [7, 8].
The energy consumption of an anticollision protocol has been directly related to active RFID systems due to the use of batteries in active tags [9–12]. Passive RFID systems are increasingly being used with portable readers which means that the energy consumed by the reader is becoming important, and the anticollision protocol used affects it . A deep analysis of the energy consumption of anticollision protocols in passive RFID is given in . The window procedure is presented and applied to the query tree (QT) protocol , in the query window tree protocol (QwT), to decrease the energy consumed by a passive RFID system. QwT manages to decrease the number of bits transmitted by the tags which produces a significant decrease in the energy consumed by the reader. The use of the window forces the anticollision protocol to add a new type of slot, called go-on slot, which increases the total number of slots and, therefore, the total number of bits transmitted by the reader. This is specially problematic when the reader is asking the tags for the last part of their identification code (ID), since it needs to transmit longer commands .
This paper presents the contribution of a new protocol called binary window tree (BwT). This protocol proposes adding an additional internal counter to the tags which indicates the last bit of their transmitted ID. This modification allows the adoption of the window in BT. Additionally, the reader is adapted to working with the window which is tuned to dynamically adapt its size during the procedure of the identification using tags with memory. This protocol is later compared to other state-of-the-art protocols in the literature. The results show that the novel proposed protocol increases the throughput of the RFID system while it saves energy using passive tags.
Subsequently, the rest of the paper is organized as follows. Section 2 provides background information and related work on anticollision protocols. Section 3 presents the proposed BwT protocol. In Section 4 the simulation results of the comparison with state-of-the-art protocols are presented. And Section 5 concludes this paper.
In order to properly understand the proposed work, some concept definitions are introduced here:(i)A slot determines the period of time that includes a reader command and a tag response. This time is usually fixed, but some state-of-the-art works consider it dynamic, as is the case of this work. Three types of slots are usually considered upon the number of tags’ responses: a collision occurs when more than one tag responds in the same slot period; a success slot is given when only one tag responds to a reader command; and an idle slot occurs when no tag responds to a reader command.(ii)An interrogation cycle is the period of time the reader needs to identify the whole set of available tags. An interrogation cycle is composed of several slots.(iii)The metric throughput is conceived as the number of read tags in the unit of time.
Using these main concepts the transmission model between the reader and the tags can be explained. This model assumes an ideal channel for transmissions. No physical-layer and no capture effect (when the reader decodes only the tag response with the highest power in a collision slot) are considered here. All tags in the antenna range remain correctly energized during the interrogation cycle; all tags’ responses are synchronized; and lastly, a collision occurs only when two different messages or bits are simultaneously transmitted since error transmissions are not considered. These assumptions are extensively made in other similar anticollision protocol works proposed [7, 8, 14, 16]. The transmission model is explained below.
2.1. Transmission Model
The transmission model used is defined in , which corresponds to the EPC global C1G2 standard.
Figure 1 shows the link timing of the three types of slots mentioned (collision, idle, and success) and the go-on slot explained below. Also, in Definition of Symbols and Variables a list of all the variables used in the paper is included. The reader starts transmissions using commands during time . The reader holds the RF downlink carrier, also called continuous wave CW, so that tags can harvest energy and respond with their ID. After every reader command there is a time needed for the tags to generate their responses and a time needed for the reader to receive all the transmissions; a slot will be considered idle when the reader waits for the tags’ responses for a time . Additionally, the tag’s response is produced during time .
With respect to the energy consumption model, represents the energy consumed by the reader. It is a function of the time it spends transmitting and receiving information. An energy model is proposed where the reader transmits the command and the CW to power up passive tags with power . In addition, the reader will require extra power when receiving data from the tags. Therefore, the expression used to calculate the total energy consumed during the interrogation cycle is shown in
Here, , , and represent the energy consumed during collision, success, and idle slots and , , and represent the number of collision, success, and idle slots, respectively.
2.2. Related Work
Here, some of the most relevant tree based protocols in the literature are presented. This will later be simulated and compared in Section 4.
2.2.1. Binary Tree Protocol
The Binary Tree (BT) protocol was firstly applied to RFID by Hush and Wood in . It uses a tree to organize and identify all the tags into the reader’s antenna range. Every time a collision occurs between tags’ responses the responding tags are split into two different subgroups. These subgroups become increasingly smaller until they are split into two tags, which can therefore be identified (see Figure 2).
The reader consecutively interrogates all these subgroups and tags outside these groups which wait until their subgroup is chosen for the interaction with the reader. Every time the protocol reaches a leave of the tree, the reader identifies the tag and goes back to the last subgroup produced which starts to be split in a similar manner.
Bertsekas and Gallager then included an internal counter on every tag which they modify upon the reader commands . The reader can indicate the three possible slot states. Upon an idle slot, tags decrease their counters by 1; upon a collision slot, transmitting tags choose between 0 and 1 randomly, and waiting tags increase their counter by 1; upon a success, the transmitting tag goes to sleep mode and the rest of the tags decrease their counters by 1.
2.2.2. Fast Tree Traversal Protocol
Choi et al. proposed the Fast Tree Traversal Protocol (FTTP)  that uses the Maximum Likelihood Estimation (MLE) to calculate the number of available tags on the internal nodes of the left branch of the tree.
The protocol uses BT until the first tag is identified. This process covers the full left branch of the tree. Then, the protocol goes step by step back on the different internal nodes and calculates the number of available tags on the right branch of those nodes using MLE. FTTP estimates that the number of tags available on the right branch should be equal to the number of tags on the left one which is already known. This is used to modify the internal counters of the tags and separate their responses. FTTP then uses BT whenever a collision is produced during the identification.
2.2.3. Optimal Binary Tracking Tree Protocol
A BT based protocol with a bit estimator and bit tracking technology, referred to as the Optimal Binary Tracking Tree (OBTT) protocol, is given in . It first employs a bit estimation algorithm to estimate the existing number of tags. Tags choose to swap one of the bits in a 1-bit string. This string is split into segments of the tag ID length and each portion is transmitted separately to the reader. The reader uses Chebyshev’s inequality  to calculate the estimated number of bits with the number of selected and nonselected bits received in the tags’ responses. Once is obtained, the optimal number of queries to initialize a query stack is calculated using . Afterwards, queries are generated and pushed onto the stack. The rest of the process is solved using BT. Although the slot efficiency obtained by OBTT is very high, the preprocessing increases the energy consumption of the protocol, especially when .
2.2.4. Query Window Tree (QwT)
A protocol named Query window Tree (QwT) protocol which uses a methodology to manage the number of bits transmitted by the tags is presented in . The “window” is a bit string of size , where , responded to by the tags instead of their full ID. The QwT is a modification of the query tree (QT) protocol  which includes the window methodology in tags’ responses. As in QT, the reader transmits a command filled with a bit string, called query of length , and the value of calculated at the reader side. Tags compare the query with their initial part of their ID and those matching the reader’s query respond exclusively to the following number of bits specified by from the ID.
Three possible slot statuses can happen at the reader side, idle, collision, and success, as well as in QT. However, QwT introduces a new type of slot called go-on, when the reader receives similar windows of one or more tags simultaneously and obeys the following condition . In this case, the reader has not received the full ID of the tag; therefore it cannot consider the tag identified.
The window alleviates tags from transmitting large number of bits upon a collision. However, low values can cause the number of go-on slots to increase. Heuristic function (2) is proposed in  which provide an updated value in case of a go-on slot to decrease its number. parameter is used to tune the heuristic function.
Using the window, tags transmit fewer bits than that of the QT to be identified. However, the number of reader bits required by QwT is larger than that of QT since it uses a lot of longer queries than the latter.
3. The Proposed BwT Protocol
Here the BwT protocol is presented. This protocol implements the window methodology into BT. BwT tags use two counters: a slot counter SC and a bit counter BC; and the reader, on the other hand, uses another counter . All tags update their SC on every slot and transmit when . The BC indicates the first bit of its ID to transmit and is updated adding the value only when the tag is in the transmitting state () and a notification of a go-on slot is received. Therefore, whenever a tag has its counter , it transmits bits starting from BC bit (see Figure 3) and a cyclic redundancy check code (CRC), similar to that demanded on the EPC C1G2 standard , to differentiate their responses at the reader.
The reader of BwT follows the same procedure on every slot. First, it receives the window transmitted by the tags and checks the type of slot it has received. According to the type of slot, the reader updates its counter to monitor the length of the already acquired ID of the transmitting tag or tags and calculates the new value to be transmitted. Then, it transmits a new command containing the status of the last slot received and the newly calculated W.
As mentioned before, slots can be idle, success, collision, and go-on. Pseudocode for the BwT reader and tags is shown in Algorithms 1 and 2 to perform an identification cycle. This pseudocode is executed during a specified time until all the tags in the interrogation zone are identified. In the beginning, the reader is initialized with and . The new command is assembled with the type of the last slot and the value of and is broadcast to the tags.
After a certain period of time or after receiving a response, the reader identifies the type of slot according to the CRC consistency and takes the following actions depending on the slot identified:
(i) Idle slot (Algorithm 1 line ()): when no response is received, the reader broadcasts a new command “Idle” with an invariant .
(ii) Collision slot (Algorithm 1 lines ()−()) occurs when the reader decodes the received windows and these are not CRC consistent. The reader needs to remember the already acquired ID since it may belong to different tags with a common partial ID. Therefore, the accumulated tag ID received at that point is stored into a Last Input First Output (LIFO) stack. Then the reader indicates the new command “Collision” with set to 1 and broadcasts it to the tags.
(iii) Go-on slot (Algorithm 1 lines ()−()) is when the CRC validates the received window and the condition is met. The reader updates the partial ID received and its length with the received window (Algorithms 1 lines ()-()). Then, is updated using the exponential heuristic function shown in (3). How is adjusted is given in Section 3.1.
This expression is a practiced deduction to balance the number of tag transmitting bits and go-on slots. It allows the reader to choose small when the probability of collision is prone to increase, providing a small colliding tag bit rate; while it offers larger when increases (and, thus, the probability of collision decreases), contributing to decrease of the number of go-on slots. In addition, this value is always delimited by the expression Lastly, a new command “go-on” with the calculated is broadcast to the tags.
(iv) Success slot (Algorithm 1 lines ()-()) is when the CRC validates the received window and the tag ID is uniquely defined: . Then, the ID is stored in a database and a new partially received ID is popped from the LIFO stack to continue the identification of the rest of the tags.
The tags’ operation in Algorithm 2 line () starts receiving the reader’s command and acts differently if they have transmitted in the previous slot ().
(v) If tags remained silent in the previous slot, they update their SC counter adding in case of collision (Algorithm 2 line ()) or subtracting for idle or success (Algorithm 2 lines (), ()).
(vi) If a tag transmitted in the previous slot (), it performs differently. Upon a collision, the tag chooses a new SC randomly between 0 and 1; in case of success it goes to “sleep” state until the next interrogation cycle; and in case of a go-on command, the tag updates its BC counter with the previous transmitted (oW), transmits by backscattering the immediately received bits (nW) from the bit indicated by BC, and attaches the calculated CRC in the response.
An example of an identification of three tags using BwT is shown in Table 1. This example shows how the counters are updated upon the different types of slots.
3.1. Tuning β in BwT
As previously explained, the reception of a CRC consistent tag response does not necessarily mean the identification of a tag. The use of the window can cause the tag response to be only part of the ID; that is, .
There is a need of dynamically recalculating in order to decrease the number of go-on slots while keeping the number of tag transmitting bits low. The higher the value of , the lower the number of go-on slots and the higher the number of tag transmitting bits. A desirable behavior can be found using exponential equation (3) to search for a balance between these parameters. The parameter is tuned in order to seek for that balance.
The simulation results of the energy consumed by the RFID reader to identify 1 tag, the throughput of the system, and the number of slots and reader bits needed per tag for different values of are shown in Figure 4 under a set of 1000 tags (more details about the simulation parameters are also given in Section 4). The results show that for the energy consumed by the reader, and the number of slots, and reader bits per tag are at their lowest values and the throughput shows the highest values achieving a compensated balance between go-on slots and tag transmitting bits. Therefore, a value of is chosen for the comparison with the state-of-the-art protocols.
(a) Energy consumption per tag
(c) Slots per tag
(d) Reader bits per tag
4. Simulation Results
This section presents the simulation results of the proposed protocol using Matlab R2016b with an evaluation of the outcomes. A comparison between the proposed BwT protocol and the presented protocols in Section 2.2, BT , FTTP , OBTT , and QwT , is presented here.
A scenario with one reader and a varying set of tags from 100 to 1000 tags is proposed. These tags are uniformly distributed and is assumed as 128 bits since it is the most common ID length that is currently used in the standard EPC C1 G2 (96 bits of Electronic Product Code + 16 bits of Protocol Control + 16 bits of CRC) . The tag IDs are uniformly distributed and dynamically generated with varying random seed values for every simulation iteration. The simulated responses have been averaged over 100 iterations for accuracy in the results. Table 2 shows the parameters used in the simulations. Tari, the time interval for a data 0 transmission, is set to the standard’s minimum of 6.25 μs for the highest data rate (same for reader and tag), conditioning, RTCal, TRCal, T1, T2, and T3 in accordance with the EPC standard . and were obtained from .
Presented in Figure 1 is the link timing of the four typical types of slots to perform identification time calculations and (1) for energy calculations. The duration of each slot can be different, and bits 0 and 1 have been considered as 1 Tari for easiness in calculations. This, in fact, has been applied to all the protocols, ensuring fairness in the comparison.
The length of the reader commands is set to 3 bits for all the compared protocols, enough to encode all the needed commands. BwT, in addition, attaches represented with bits; and QwT uses the length of the query on every slot plus the corresponding bits. Tag responses are bits long, except for BwT and QwT which use bits and a CRC of 5 bits and OBTT which transmits the following ID bits to the received query after the estimation phase.
Figure 5 shows the throughput and the total number of bits used by the RFID system in the comparison of the simulated protocols. The calculation of the throughput is based on the total number of bits transmitted by the reader and the tags. BwT shows the highest throughput, slightly over OBTT. The use of the window increases the number of slots needed to identify the set of tags due to the generation of go-on slots. OBTT splits the initial set of tags in smaller subsets and therefore decreases the number of collisions and total slots. BwT, however, reduces the length of tag responses causing a BwT collision to spend less time than that of an OBTT. This is directly reflected on the throughput, meaning that the time BwT spends with go-on slots plus the time saved in collisions with low values is less than the time OBTT spends on collisions.
(b) Total transmitted bits
The window, therefore, contributes to reducing the number of tag transmitting bits, which is shown on Figure 5(b) showing BwT as the least bit consuming protocol. Although QwT also uses the window, the excessive number of bits demanded by the reader transmitting queries causes a higher increase in the total number of bits than that of the BwT, decreasing also the throughput of the system. OBTT presents good results also in both metrics thanks to its estimation phase at the beginning of the identification and the use of Manchester coding in the interrogation of the tags. This codification helps the reader to track collisions bit by bit, which in the end affects the total number of bits transmitted by reducing them. FTTP also presents an estimation phase in the beginning; however, it does not use Manchester coding and cannot reach the throughput of OBTT.
Simulations results per tag are shown in Figure 6. The energy consumed by the reader to identify 1 tag is shown in Figure 6(a). The energy consumed has been calculated using (1). In this comparison, BwT outperforms the other compared protocols for all the different sets of tags. The energy consumed to identify 1 tag is not affected by the total number of tags existing in the range of the antenna in BwT. OBTT and FTTP, however, show slight increases in dense and low populated tag environments, respectively. QwT shows a high increase when there are a few tags on the range of the reader’s antenna and BT shows the worst results of the comparison.
(a) Energy consumption
(b) Tag bits
(c) Slots per tag
(d) Reader bits
As the bit window technique modifies the number of tag transmitting bits per slot, Figure 6(b) shows the improvement caused by the window in QwT and BwT as the least tag bit transmitting protocols, quite the opposite of BT. Although BwT and QwT tags need to use CRCs, they transmit the lowest number of bits.
The decrease in tag transmitting bits shown by the windowed protocols BwT and QwT is achieved at the cost of an increase in go-on slots. Figure 6(c) presents both protocols as the most slot consuming protocols to identify a tag. FTTP and OBTT, using the estimation phase, provide the best performance in terms of slots, where the bit tracking protocol OBTT stands out with only 2 slots to identify a tag. Notice also that despite the need of both windowed protocols of the highest number of slots, BwT saves more than 50% of the reader bits transmitted compared with that of QwT. QwT tags demand that the reader transmit long queries, which increases the number of reader bits.
Summing up, BwT reduces the number of tag transmitting bits thanks to the use of the window and avoids transmitting queries. This fact results in a deep reduction of the total transmitted bits reducing the energy consumed by the reader and increasing the throughput of the RFID system. These results show evidence of BwT being a good candidate which seeks for a high throughput under low energy consumption.
An anticollision protocol, called BwT, has been presented in this paper. BwT applies the window procedure to the BT protocol including an additional counter in the tags in order to manage the number of ID bits they transmit and the bits they have already transmitted. BwT has been compared to several state-of-the-art anticollision protocols outperforming them in terms of throughput and decreasing the energy consumed by the reader to identify 1 tag. Therefore, simulations showed that BwT can be considered as a good RFID anticollision candidate in passive RFID systems.
Definition of Symbols and Variables
|:||Time needed to transmit a reader command|
|:||Time needed to transmit a tag response|
|:||Time the tags need to generate a response|
|:||Time the reader needs to receive a response|
|:||Max. time a reader waits before considering the slot idle|
|:||Reader transmission power|
|:||Reader reception power|
|:||Energy consumed by reader|
|:||Length of a tag ID|
|:||Length of a query|
|:||Size of the window.|
Conflicts of Interest
The authors declare that there are no conflicts of interest regarding the publication of this paper.
K. Finkenzeller, “RFID Handbook: Fundamentals and Applications in Contactless Smart Cards, Radio Frequency Identification and near-Field Communication,” RFID Handbook: Fundamentals and Applications in Contactless Smart Cards, Radio Frequency Identification and near-Field Communication, 2010.View at: Publisher Site | Google Scholar
R. Want, B. N. Schilit, and S. Jenson, “Enabling the internet of things,” The Computer Journal, vol. 48, no. 1, pp. 28–35, 2015.View at: Publisher Site | Google Scholar
D. K. Klair, K.-W. Chin, and R. Raad, “A survey and tutorial of RFID anti-collision protocols,” IEEE Communications Surveys & Tutorials, vol. 12, no. 3, pp. 400–421, 2010.View at: Publisher Site | Google Scholar
H. Gao, Z. Yang, J. Bhimani et al., “AutoPath: Harnessing Parallel Execution Paths for Efficient Resource Allocation in Multi-Stage Big Data Frameworks,” in Proceedings of the 2017 26th International Conference on Computer Communication and Networks (ICCCN), pp. 1–9, July 2017.View at: Publisher Site | Google Scholar
Z. Yang, J. Wang, D. Evans, and N. Mi, “AutoReplica: Automatic data replica manager in distributed caching and data processing systems,” in Proceedings of the 35th IEEE International Performance Computing and Communications Conference, IPCCC 2016, December 2016.View at: Publisher Site | Google Scholar
GS1, 2015, EPC™ Radio-Frequency Identity Protocols Generation-2 UHF RFID - Specification for RFID Air Interface - Protocol for Communications at 860 MHz–960 MHz.
J. Choi, I. Lee, D.-Z. Du, and W. Lee, “FTTP: A fast tree traversal protocol for efficient tag identification in RFID networks,” IEEE Communications Letters, vol. 14, no. 8, pp. 713–715, 2010.View at: Publisher Site | Google Scholar
Y. C. Lai, L. Y. Hsiao, and B. S. Lin, “Optimal slot assignment for binary tracking tree protocol in RFID tag identification,” IEEE/ACM Transactions on Networking, vol. 23, no. 1, pp. 255–268, 2015.View at: Publisher Site | Google Scholar
V. Namboodiri and L. Gao, “Energy-aware tag anticollision protocols for RFID systems,” IEEE Transactions on Mobile Computing, vol. 9, no. 1, pp. 44–59, 2010.View at: Publisher Site | Google Scholar
X. Yan and X. Liu, “Evaluating the energy consumption of the RFID tag collision resolution protocols,” Telecommunication Systems, vol. 52, no. 4, pp. 2561–2568, 2013.View at: Publisher Site | Google Scholar
D. K. Klair, K.-W. Chin, and R. Raad, “An investigation into the energy efficiency of pure and Slotted Aloha based RFID anti-collision protocols,” in Proceedings of the 2007 IEEE International Symposium on a World of Wireless, Mobile and Multimedia Networks, WOWMOM, 4, p. 1, June 2007.View at: Publisher Site | Google Scholar
Z. Yang, M. Awasthi, M. Ghosh, and N. Mi, “A fresh perspective on total cost of ownership models for flash storage in datacenters,” in Proceedings of the 8th IEEE International Conference on Cloud Computing Technology and Science, CloudCom 2016, pp. 245–252, December 2016.View at: Publisher Site | Google Scholar
F. Hessar and S. Roy, “Energy based performance evaluation of passive EPC Gen 2 class 1 RFID systems,” IEEE Transactions on Communications, vol. 61, no. 4, pp. 1337–1348, 2013.View at: Publisher Site | Google Scholar
H. Landaluce, A. Perallos, E. Onieva, L. Arjona, and L. Bengtsson, “An Energy and Identification Time Decreasing Procedure for Memoryless RFID Tag Anticollision Protocols,” IEEE Transactions on Wireless Communications, vol. 15, no. 6, pp. 4234–4247, 2016.View at: Publisher Site | Google Scholar
C. Law, K. Lee, and K.-Y. Siu, “Efficient memoryless protocol for tag identification,” in Proceedings of the 4th International Workshop on Discrete Algorithms and Methods for Mobile Computing and Communications, pp. 75–84, Boston, Mass, USA, August 2000.View at: Google Scholar
H. Vogt, “Efficient object identification with passive RFID tags,” in Pervasive Computing, vol. 2414 of Lecture Notes in Computer Science, pp. 98–113, Springer, Berlin, Germany, 2002.View at: Publisher Site | Google Scholar
D. R. Hush and C. Wood, “Analysis of tree algorithms for RFID arbitration,” in Proceedings of the IEEE International Symposium on Information Theory (ISIT '98), pp. 107–114, IEEE, Cambridge, Mass, USA, August 1998.View at: Publisher Site | Google Scholar
D. Bertsekas and R. Gallager, Data Networks, Pearson, 2nd edition.