#6 Using mouse-tracking loop approach to handle dragging and mouse up. First seemingly working version
#6 Added a comment for mouse-track loop approach and moved private methods down