A system for monitoring heartbeat packets in a telephone communications network, comprising: an internet protocol public branch exchange, iPBX, server connected to a plurality of groups of internet protocol, IP, phones, wherein each group includes at least a number N of IP phones and the iPBX is configured to receive a heartbeat packet from each of the N IP phones in each group at least once every N intervals, wherein N is a positive integer; and a timer manager operating in the iPBX server, comprising: a partitioned timer module having N+P sections, with a timer pointer indexing through the timer module at a selected frequency, wherein P is a positive integer; a phone object list located in each of the N+P sections; a separate phone object for each of the N IP phones in each group, the system being configured such that the separate phone objects can be contained in one of the phone object lists in the partitioned timer module, wherein a phone object for an associated IP phone is removed from the phone object list in the section in which it is located when a heartbeat packet from said IP phone is received at the iPBX and said phone object is then newly appended to a phone object list in the section at which the timer pointer is indexed; a potential path failure module configured to monitor each phone object list at which the timer pointer is indexed, wherein each phone object that is on the phone object list that has not been newly appended is considered to be a potential path failure. an internet protocol public branch exchange, iPBX, server connected to a plurality of groups of internet protocol, IP, phones, wherein each group includes at least a number N of IP phones and the iPBX is configured to receive a heartbeat packet from each of the N IP phones in each group at least once every N intervals, wherein N is a positive integer; and a timer manager operating in the iPBX server, comprising: a partitioned timer module having N+P sections, with a timer pointer indexing through the timer module at a selected frequency, wherein P is a positive integer; a phone object list located in each of the N+P sections; a separate phone object for each of the N IP phones in each group, the system being configured such that the separate phone objects can be contained in one of the phone object lists in the partitioned timer module, wherein a phone object for an associated IP phone is removed from the phone object list in the section in which it is located when a heartbeat packet from said IP phone is received at the iPBX and said phone object is then newly appended to a phone object list in the section at which the timer pointer is indexed; a potential path failure module configured to monitor each phone object list at which the timer pointer is indexed, wherein each phone object that is on the phone object list that has not been newly appended is considered to be a potential path failure. a partitioned timer module having N+P sections, with a timer pointer indexing through the timer module at a selected frequency, wherein P is a positive integer; a phone object list located in each of the N+P sections; a separate phone object for each of the N IP phones in each group, the system being configured such that the separate phone objects can be contained in one of the phone object lists in the partitioned timer module, wherein a phone object for an associated IP phone is removed from the phone object list in the section in which it is located when a heartbeat packet from said IP phone is received at the iPBX and said phone object is then newly appended to a phone object list in the section at which the timer pointer is indexed; a potential path failure module configured to monitor each phone object list at which the timer pointer is indexed, wherein each phone object that is on the phone object list that has not been newly appended is considered to be a potential path failure.