avoid copying, enqueue by swapping pointer