def METHOD_NAME(initial: str, additional=None) -> Callable:
    def question_handler(ctx: Context, actor: Actor) -> str:
        """
        Implements the original booklink2reply intended to change the branch
        Exits the skill if no questions remain
        """
        questions: List[str] = [] if not additional else [additional]
        used = ctx.misc.get("used_phrases", [])
        if not id(WHAT_BOOK_IMPRESSED_MOST) in used:
            questions.append(WHAT_BOOK_IMPRESSED_MOST)
        first_fav_named = id(FAVOURITE_BOOK_PHRASES[0]) in used
        if not first_fav_named:
            questions.append(FAVOURITE_BOOK_PHRASES[0])
        second_fav_named = any([id(x) in used for x in FAVOURITE_BOOK_PHRASES[1:]])
        if first_fav_named and not second_fav_named:
            questions.extend(FAVOURITE_BOOK_PHRASES[1:])
        if not ctx.misc.get("flags", {}).get("user_fav_genre_visited", False):
            questions.append(WHAT_GENRE_FAV)
        random.shuffle(questions)
        return append_unused(initial, questions, exit_on_exhaust=True)(ctx, actor)
    return question_handler