private void addDragListeners() {
        /** This handle is a reference to THIS because in next Mouse Adapter
         "this" is not allowed */
        final DrawMatche handle = this;
        addMouseMotionListener(new MouseAdapter() {

            @Override
            public void mouseMoved(MouseEvent e) {
                anchorPoint = e.getPoint();
                GameSession.User user = session.getCurrentUser();
                Integer count = user.getCount();
                if(count <= 0 || user.getType().equals("robot") || session.getButton().is_new()) return;
                setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
            }

            @Override
            public void mouseDragged(MouseEvent e) {
                int anchorX = anchorPoint.x;
                int anchorY = anchorPoint.y;
                GameSession.User user = session.getCurrentUser();
                Integer count = user.getCount();
                if(count <= 0 || user.getType().equals("robot") || session.getButton().is_new()) return;

                Point parentOnScreen = getParent().getLocationOnScreen();
                Point mouseOnScreen = e.getLocationOnScreen();
                Point position = new Point(mouseOnScreen.x - parentOnScreen.x -
                        anchorX, mouseOnScreen.y - parentOnScreen.y - anchorY);
                setLocation(position);

                //Change Z-Buffer if it is "overbearing"
                if (overbearing) {
                    getParent().setComponentZOrder(handle, 0);
                    repaint();
                }

                removeThisMatche();
            }
        });
    }