First cut at device model