DRag and drop now implemented, refactored code a bit and added thorough commenting