Device class
Use loop tokens instead of queues and flags and things
Make calls robust to multiple objects
Turn around all these commands to be object methods