Ex using queues of tasks rather than strings

Corresponding futures will be useful when implementing two-way stuff