a bit of a start on dragging, though i need to refactor i think