How would you suggest setting up the command-queuing system?
Edit: To clarify:
1) How would you implement getting commands for the queue? For example, should every function which interacts with the device return a Command object?
2) How would you processs the commands? For example, drop them off in a central point?