move queue update logic to QueueItem and QueueItemsController