implement item moving, refactoring