A method for iteratively replicating packets when expanding a multi-destination group, the method comprising: storing a multi-destination expansion table comprising a first database containing data representing all nodes in a singly linked list that is a superset of nodes for a plurality of multi- destination groups (20, 30, 40), each node representing an interface of a physical or virtual network device and each entry in the first database comprising interface data associated with a current node address and an address for a next node in the singly linked list, and a second database storing data representing multi-destination group specific arcs bypassing one or more nodes in the first database; and traversing the singly linked list to determine how to replicate a packet for a particular multi-destination group (20, 30, 40) by: accessing the first database using a current node address to determine a next node address and to determine interface data associated with the current node address; replicating the packet based on interface data stored in the first database associated with the current node address; searching the second database using a key based on a group identifier for a subset of the plurality of nodes in the singly linked list to determine whether a match to the key exists in the second database; and when a match is found in the second database, determining a next node address for a node in the first database from a matching entry to the key in the second database and when a match is not found in the second database, determining a next node address for a node in the first database obtained from accessing the first database. storing a multi-destination expansion table comprising a first database containing data representing all nodes in a singly linked list that is a superset of nodes for a plurality of multi- destination groups (20, 30, 40), each node representing an interface of a physical or virtual network device and each entry in the first database comprising interface data associated with a current node address and an address for a next node in the singly linked list, and a second database storing data representing multi-destination group specific arcs bypassing one or more nodes in the first database; and traversing the singly linked list to determine how to replicate a packet for a particular multi-destination group (20, 30, 40) by: accessing the first database using a current node address to determine a next node address and to determine interface data associated with the current node address; replicating the packet based on interface data stored in the first database associated with the current node address; searching the second database using a key based on a group identifier for a subset of the plurality of nodes in the singly linked list to determine whether a match to the key exists in the second database; and when a match is found in the second database, determining a next node address for a node in the first database from a matching entry to the key in the second database and when a match is not found in the second database, determining a next node address for a node in the first database obtained from accessing the first database. accessing the first database using a current node address to determine a next node address and to determine interface data associated with the current node address; searching the second database using a key based on a group identifier for a subset of the plurality of nodes in the singly linked list to determine whether a match to the key exists in the second database; and when a match is found in the second database, determining a next node address for a node in the first database from a matching entry to the key in the second database and when a match is not found in the second database, determining a next node address for a node in the first database obtained from accessing the first database.