More work on bug #7579.  The roles are now working pretty well.  I just need to integrate them into the device system class and it should all work.