pickup/drop   functions refactored