A device for obtaining a balanced Ad-hoc network formation in an Ad-hoc network, comprising: at least one receiving module configured to receive at least one metric information from at least one other device in the Ad-hoc network, wherein the at least one metric information comprises at least one of a Routing table size, RTsize, stateless routing metric used as a metric object in a first mode of operation for calculating a path cost of a neighbouring device, or a Packet Processed Rate, PPR, stateful routing metric used as a metric object in a second mode of operation for calculating the path cost for the neighbouring device; at least one selection module configured to: calculate at least one path cost of at least one neighbouring device, selected from one or more devices in the Ad-hoc network, according to the metric information received and the mode of operation; and in response to determining that the at least one path cost of the at least one neighbouring device is minimum, select, the at least one neighbouring device as a parent device; at least one switching module configured to switch to the selected parent device based on selection and based on an amount of workload, wherein a current parent device of the device is switched to the selected parent device if the at least one path cost of the selected parent device is minimum as compared to a path cost of the current parent device, and an amount of workload of the selected parent device is less than an amount of workload of the current parent device; and wherein the path cost is calculated using: PathWt = NB RTSize → iff DIO ip = = PrefParent ip NB RTSize + OWN RTsize + 1 → iff otherwise for stateless routing metric calculation; and PathWt = NB PPR → iff DIO ip = = PrefParent ip NB PPR + OWN PPR + 1 → iff otherwise for stateful routing metric calculation; wherein, '1' is the default parent switch threshold; NB RTSize is a Routing table size of the at least one neighbouring node; NB PPR is a PPR of the at least one neighboring node; OWN PPR is a self calculated PPR of the device; DIO is a Destination Oriented Directed Acyclic Graph Information Object; ip is an internet protocol address; and OWN RTSize is a Routing table size of the device. at least one receiving module configured to receive at least one metric information from at least one other device in the Ad-hoc network, wherein the at least one metric information comprises at least one of a Routing table size, RTsize, stateless routing metric used as a metric object in a first mode of operation for calculating a path cost of a neighbouring device, or a Packet Processed Rate, PPR, stateful routing metric used as a metric object in a second mode of operation for calculating the path cost for the neighbouring device; at least one selection module configured to: calculate at least one path cost of at least one neighbouring device, selected from one or more devices in the Ad-hoc network, according to the metric information received and the mode of operation; and in response to determining that the at least one path cost of the at least one neighbouring device is minimum, select, the at least one neighbouring device as a parent device; calculate at least one path cost of at least one neighbouring device, selected from one or more devices in the Ad-hoc network, according to the metric information received and the mode of operation; and in response to determining that the at least one path cost of the at least one neighbouring device is minimum, select, the at least one neighbouring device as a parent device; at least one switching module configured to switch to the selected parent device based on selection and based on an amount of workload, wherein a current parent device of the device is switched to the selected parent device if the at least one path cost of the selected parent device is minimum as compared to a path cost of the current parent device, and an amount of workload of the selected parent device is less than an amount of workload of the current parent device; and wherein the path cost is calculated using: PathWt = NB RTSize → iff DIO ip = = PrefParent ip NB RTSize + OWN RTsize + 1 → iff otherwise for stateless routing metric calculation; and PathWt = NB PPR → iff DIO ip = = PrefParent ip NB PPR + OWN PPR + 1 → iff otherwise for stateful routing metric calculation; wherein, '1' is the default parent switch threshold; NB RTSize is a Routing table size of the at least one neighbouring node; NB PPR is a PPR of the at least one neighboring node; OWN PPR is a self calculated PPR of the device; DIO is a Destination Oriented Directed Acyclic Graph Information Object; ip is an internet protocol address; and OWN RTSize is a Routing table size of the device. '1' is the default parent switch threshold; NB RTSize is a Routing table size of the at least one neighbouring node; NB PPR is a PPR of the at least one neighboring node; OWN PPR is a self calculated PPR of the device; DIO is a Destination Oriented Directed Acyclic Graph Information Object; ip is an internet protocol address; and OWN RTSize is a Routing table size of the device.