add shift and pop