Move most of the work to ipdevice application