A method carried out by a sending voice device of signaling information over a voice channel, comprising: sending sequentially, on the voice channel, a plurality of Dual Tone MultiFrequency tones (D1..Dn) defined by a feature code definition, wherein each of the tones is separated by a time gap (T gap) tracked by a T gap timer (510a..510n); and in response to determining that, whilst sending sequentially the plurality of Dual Tone MultiFrequency tones, the sending device did not receive an indication (NACK) that a receiving device did not receive Dual Tone MultiFrequency tones that could be mapped to a valid feature code definition, starting a T retry timer subsequent to sending the last tone of the feature code definition and stopping tracking by the T gap timer; the method further comprising: receiving an indication (NACK) that a receiving device did not receive Dual Tone MultiFrequency tones that could be mapped to a valid feature code definition; and responsive to receiving the indication: performing one of: stopping the T retry timer in response to determining that the T retry timer is running, and waiting for the T gap timer to expire in response to determining that the T gap timer is running; and resending the Dual Tone MultiFrequency tones of the previously-sent feature code. sending sequentially, on the voice channel, a plurality of Dual Tone MultiFrequency tones (D1..Dn) defined by a feature code definition, wherein each of the tones is separated by a time gap (T gap) tracked by a T gap timer (510a..510n); and in response to determining that, whilst sending sequentially the plurality of Dual Tone MultiFrequency tones, the sending device did not receive an indication (NACK) that a receiving device did not receive Dual Tone MultiFrequency tones that could be mapped to a valid feature code definition, starting a T retry timer subsequent to sending the last tone of the feature code definition and stopping tracking by the T gap timer; the method further comprising: receiving an indication (NACK) that a receiving device did not receive Dual Tone MultiFrequency tones that could be mapped to a valid feature code definition; and responsive to receiving the indication: performing one of: stopping the T retry timer in response to determining that the T retry timer is running, and waiting for the T gap timer to expire in response to determining that the T gap timer is running; and resending the Dual Tone MultiFrequency tones of the previously-sent feature code. receiving an indication (NACK) that a receiving device did not receive Dual Tone MultiFrequency tones that could be mapped to a valid feature code definition; and responsive to receiving the indication: performing one of: stopping the T retry timer in response to determining that the T retry timer is running, and waiting for the T gap timer to expire in response to determining that the T gap timer is running; and resending the Dual Tone MultiFrequency tones of the previously-sent feature code. performing one of: stopping the T retry timer in response to determining that the T retry timer is running, and waiting for the T gap timer to expire in response to determining that the T gap timer is running; and stopping the T retry timer in response to determining that the T retry timer is running, and waiting for the T gap timer to expire in response to determining that the T gap timer is running; resending the Dual Tone MultiFrequency tones of the previously-sent feature code.