added abstract device and app