Improvements & Drag/Drop

Adds drag drop and rearranges the code to be less iterative in favor of simple loops.