add device struct