def fusion_append(fields, error_field, etl_func):
    """
    TODO: dict based better than list based please

    :param fields:
    :param error_field:
    :param etl_func:
    :return:
    """
    return compose(read_fields(fields),
                   etl_func, dict_enforcer, write_error_field(error_field))