It seems like `vo.samp` could handle the queueing itself.  Why is it the responsibility of the class implementation to place its result in a queue?