OrderedCollections understand a whole bunch of messages that allow them to perform a variety of data structuring functions.
add: (or even addLast: for queues) to an OrderedCollection. There are a variety of remove operations, such as remove:ifAbsent: (which takes a block to execute if the item to remove isn't found) and removeFirst (which is also good for queues.