public void assignMowerTasksByFootprint(LinkedList<FootPrint> footPrint)
	{
		for(FootPrint fp:footPrint)
		{
			Util.debugPrint(fp.toDebugString(),Util.LOG_DEBUG);
			Util.debugPrint("Mower Task:"+this.mowerTasks.size()+" "+this.mowerTasks.get(0).getBlocksCount(),Util.LOG_DEBUG);
			if(this.mowerTasks.size()>0)
			{
				if(this.currentMower==null)
				{
					if(!fp.getCommand().equals("M"))continue;
					this.currentMower=new StandardMower(fp.getMowerCoordinate().getCopy());
					Util.debugPrint("New Mower Created:"+fp.getMowerCoordinate().getCopy(),Util.LOG_DEBUG);
				}
				
				if(fp.getCommand().equals("M")&&!this.mowerTasks.get(0).assignBlock())
				{
					this.mowerTasks.remove(0);
					this.mowers.add(this.currentMower);
					this.currentMower=null;
					Util.debugPrint("Curent Mower Finished!",Util.LOG_DEBUG);
				}else
				{
					this.currentMower.insertCommand(fp.getCommand()); 	
				}
				
			}
					
		}
		
		if(this.currentMower!=null)
		{
			this.mowers.add(this.currentMower);
			this.mowerTasks.remove(0);
		}
		
		//what if there is still task left
		if(this.mowerTasks.size()==1)
		{
			Util.debugPrint("Mower Task Left: "+this.mowerTasks.size(),Util.LOG_DEBUG);
			this.currentMower=new StandardMower(this.mowers.get(this.mowers.size()-1).getInitPosition().getCopy().action('M'));
			this.mowers.add(this.currentMower);
		}
		
	}