private void makeWormTurn(int i, int j) {
        Worm thisWorm = (Worm) Level[i][j];
        if (thisWorm.isChecked()) {
            return;
        }
        HexDirection dir = thisWorm.getWormsNewDirection();
        int newX = TranslateDirection(i, j, dir, 'x');
        int newY = TranslateDirection(i, j, dir, 'y');

        if (newX >= 0 && newX < levelSize && newY >= 0 && newY < levelSize && (Level[newX][newY] == null || Level[newX][newY].is(Bacteria.class))) {
            moveWormAndEatBacteriaIfAble(thisWorm, newX, newY);
            //worm moved elsewhere
            Level[i][j] = null;
        } else if (!thisWorm.looseWeight()) {
            //dead worm
            Level[i][j] = null;
        } else {
            evolveIfStuck(thisWorm);
        }

        checkOverweightAndMultiplyIfNeeded(i, j, thisWorm, newX, newY);
        thisWorm.setChecked(true);
    }