def merge_words(current_words, new_words):
    """ Determine words to add and delete for words update.

        Parameters:

            list(dict). Currently existing words
            list(dict). Words after update

        Return:

            list(dict). Words to keep
            list(dict). Words to remove
            list(dict). Words to add
    """
    to_keep = []
    to_delete = []
    for word in current_words:
        found = next(
            (item for item in new_words if item["word"] == word["word"]), None)
        if found:
            to_keep.append(found)
        else:
            to_delete.append(word)

    curr = [item["word"] for item in current_words]
    to_add = [item for item in new_words if item["word"] not in curr]
    return to_keep, to_delete, to_add