Refactored to move generic behavior of Draggable and Droppable to a parent class