added shift and clear methods