public void clickAndDrag(MouseEvent start, MouseEvent end) {

        Well startWell = getWellFromScreenLocation(start.getPoint());
        Well endWell = getWellFromScreenLocation(end.getPoint());

        //if neither location was on a well, do nothing
        if (startWell == null || endWell == null) return;
        //if start and end well are the same, count this click and drag as a regular mouseClicked
        else if (startWell == endWell) selectWell(end, endWell);
        /**
         * Else, they are different wells and we should make a task for movement between them.
         */
        else {
            //add in option for user to reverse the flow of liquid by holding down alt
            boolean shouldReverse = false;
            if (end.isAltDown()) shouldReverse = true;

            /**
             * There are a few cases for actually moving:
             * 1) start well was not selected, so we just move that single well to the single end well
             * 2) start well was selected, so we make moves for ALL selected wells to the end well
             */
            if (!startWell.isSelected) {
                ArrayList<Well> startWellWrapper = new ArrayList<Well>();
                startWellWrapper.add(startWell);
                taskModel.makeMoveTask(startWellWrapper, endWell, shouldReverse);
            }
            else taskModel.makeMoveTask(selectedWells, endWell, shouldReverse);
        }
        view.update();
    }