public ReturnValues turnTo(Coordinate _start, Coordinate _end, int _playerDireciton){
        int startDir = _playerDireciton;
        
        startDir--;
        if(startDir < 0)
            startDir = 3;
        
        Coordinate n = getFacingCoordinate(_start, startDir);
        startDir = _playerDireciton;
        startDir++;
        if(startDir > 3)
            startDir = 0;
        Coordinate opposite = getFacingCoordinate(_start, startDir);
        
        ReturnValues ret = new ReturnValues();
        if(_end.compare(n)){
            //Found square when turning left.
            ret.actions = new ArrayList<>(Collections.nCopies(1, World.A_TURN_LEFT));
        }
        else if(_end.compare(opposite)){
            //Found square when turning right.
            ret.actions = new ArrayList<>(Collections.nCopies(1, World.A_TURN_RIGHT));
        }
        else{
            //Did not find right square when turning, must be behind us.
            ret.actions = new ArrayList<>(Collections.nCopies(2, World.A_TURN_RIGHT));
        }
        //update new direction.
        ret.currentDir = _playerDireciton;
        for( String s : ret.actions){
            if("l".equals(s)){
                ret.currentDir--;
                if(ret.currentDir < 0)
                    ret.currentDir = 3; 
            }
            else{
                ret.currentDir++;
                if(ret.currentDir > 3)
                    ret.currentDir = 0;
            }
        }
        
        return ret;
    }