oops, added Type back in to DeviceEvent
and organized the constructor