Drag and Drop Refactor

Merging up to integration, but some code review will still need to be done