public void step() {
        if (board.getState() == State.GAME_OVER) {
            board.clear();
            board.setState(State.PLAYING);
        }

        if (board.fallingBlock == null) {
            board.addFallingBlock(tm.getPoly(rand.nextInt(tm.getNumberOfTypes())));
        }

        if (CollisionDetector.collision(board, board.fallingBlock, Action.MOVE_DOWN)) {
            board.stickFallingBlock();
            if (board.fallingBlock.position.y == 1) {
                board.setState(State.GAME_OVER);
            }
            board.fallingBlock = null;
            board.removeFullRows();

        } else {
            board.moveFallingBlock(Board.Move.DOWN);
        }
    }