Work in progress. Made changes to DeviceDriver function to make it more friendly. Changes were inspired by me using this function at work today after forgetting how I had defined its input etc, and realizing it's not so intuitive.