A client-based system for use in a mobile client device in communication with a remote server device for dynamically switching among multiple wireless interfaces on the mobile client device, the system comprising: a first interface for communicating over a cellular network; a second interface for communicating over a WiFi network; and a computer-readable medium within the mobile client device, having thereon computer-executable instructions for switching from one of the first and second interfaces to the other of the first and second interfaces based on a selection policy selected from an energy saving selection policy, an offload selection policy, and a performance selection policy, characterized in that the computer-executable instructions for switching from one of the first and second interfaces to the other of the first and second interfaces comprise instructions for: counting existing TCP connections on the current interface; adding new routing table entries for the counted connections specifying the destination address, gateway and mask for the current interface if the count is non zero so that existing TCP connections remain in the current interface; activating the other of the first and second network interfaces (113, 114); adding routing table entries for the other network interface including a default route; removing a default route of the routing table of the current interface; awaiting expiration of a predefined timeout period; and deactivating the current interface so that the device uses the other interface. a first interface for communicating over a cellular network; a second interface for communicating over a WiFi network; and a computer-readable medium within the mobile client device, having thereon computer-executable instructions for switching from one of the first and second interfaces to the other of the first and second interfaces based on a selection policy selected from an energy saving selection policy, an offload selection policy, and a performance selection policy, characterized in that the computer-executable instructions for switching from one of the first and second interfaces to the other of the first and second interfaces comprise instructions for: counting existing TCP connections on the current interface; adding new routing table entries for the counted connections specifying the destination address, gateway and mask for the current interface if the count is non zero so that existing TCP connections remain in the current interface; activating the other of the first and second network interfaces (113, 114); adding routing table entries for the other network interface including a default route; removing a default route of the routing table of the current interface; awaiting expiration of a predefined timeout period; and deactivating the current interface so that the device uses the other interface. counting existing TCP connections on the current interface; adding new routing table entries for the counted connections specifying the destination address, gateway and mask for the current interface if the count is non zero so that existing TCP connections remain in the current interface; activating the other of the first and second network interfaces (113, 114); adding routing table entries for the other network interface including a default route; removing a default route of the routing table of the current interface; awaiting expiration of a predefined timeout period; and deactivating the current interface so that the device uses the other interface.