added shift / pop