first cut at reworking the device model