begin revamp of device level functions