added OOP dragging