basic logic to push/pull item