private void prepRound(bool increaseDifficulty = false)
    {
        //delete old block
        if (targetBlock != null)
        {
            Destroy(targetBlock);
        }

        //get current round data from level manager
        RoundData round = levelManager.getRound();

        if (increaseDifficulty)
        {
            round.difficulty = Mathf.Clamp((round.difficulty + 1), 0, 5);
        }

        //special acse reset for our first random level
        if (levelManager.CurrentRound == 0 && levelManager.CurrentLevel == 3 && !unlockDifficulty)
        {
            round.reset();
        }

        //initalize round os we can grab data
        int oldKnives = knives;

        do
        {
            round.init();
        }while(oldKnives == round.Knives);
        knives = round.Knives;

        //make new block
        GameObject blockStyle = round.BlockPrefab;

        if (blockStyle == null)
        {
            targetBlock = Instantiate(blockPrefab, blockSpawn.position, blockSpawn.rotation);
        }
        else
        {
            targetBlock = Instantiate(blockStyle, blockSpawn.position, blockSpawn.rotation);
        }

        targetBlock.GetComponent <Block_Break>().init(knives, woodParticles);
        targetBlock.GetComponent <Block_Rotator>().init(round.RotationCurve, round.RotationSpeed, round.InvertRotationCurve);

        //init tokens
        knifeToken_parent.initTokens(knives);

        //spawn inital knife
        spawnKnife();

        gameState = GAME_STATE.PLAY;
        round.cleanup();
    }