@Override
	public void checkerMove(Location from, Location to) {


		if(isGameMotivatedMove(from, to)){
			
			Point pFrom = Convert.locationAndCount2xy(from, subject.getCount(from));
			Point pTo = Convert.locationAndCount2xy(to, subject.getCount(to) - 1);

			lock();

		    Figure clickedFig = findFigure(pFrom.x, pFrom.y);

		    unlock();

		    if(!isChecker(clickedFig)){
		    	Color color = subject.getColor(to);
		    	clickedFig = new CheckerFigure(color, pFrom);
		    	lock();
				add(clickedFig);	
				unlock();
		    }

		    lock();
			clickedFig.moveBy(pTo.x - pFrom.x, pTo.y - pFrom.y);
			unlock();

		}

		if(!(from.equals(Location.R_BEAR_OFF) || from.equals(Location.B_BEAR_OFF))  && this.subject.getNumberOfMovesLeft() == 0){
			((HotGammonTool) this.editor.tool()).setState(HotGammonTool.DIE_ROLL_TOOL);
		}
		
	}