def time_feature_engineering_function(dataframe, time_column):

    """
    Args: dataframe and the timeseries column called time_column
    Assumption: time_column already has the hour day month year information
    Logic: generate 8 possible combinations of the time_column column
    Returns: The original dataframe with the new feature engineered columns + names of those columns

    """

    # Then use the above column to split up into respective time components
    # in which there might be seasonality
    dataframe['hour'] = dataframe[time_column].dt.hour

    dataframe['dayofweek'] = dataframe[time_column].dt.dayofweek
    dataframe['dayofmonth'] = dataframe[time_column].dt.day
    dataframe['dayofyear'] = dataframe[time_column].dt.dayofyear

    dataframe['weekofyear'] = dataframe[time_column].dt.weekofyear
    dataframe['quarter'] = dataframe[time_column].dt.quarter
    dataframe['month'] = dataframe[time_column].dt.month
    dataframe['year'] = dataframe[time_column].dt.year

    new_col_name_list = ['hour','dayofweek','dayofmonth','dayofyear','weekofyear','quarter','month','year']

    return dataframe, new_col_name_list