def ModelMonster(model: str, parameters: dict={}, frequency: str='infer',
    prediction_interval: float=0.9, holiday_country: str='US',
    startTimeStamps=None, forecast_length: int=14, random_seed: int=2020,
    verbose: int=0):
    """Directs strings and parameters to appropriate model objects.
    
    Args:
        model (str): Name of Model Function
        parameters (dict): Dictionary of parameters to pass through to model
    """
    if model == 'ZeroesNaive':
        from autots.models.basics import ZeroesNaive
        return ZeroesNaive(frequency=frequency, prediction_interval=
            prediction_interval)
    if model == 'LastValueNaive':
        from autots.models.basics import LastValueNaive
        return LastValueNaive(frequency=frequency, prediction_interval=
            prediction_interval)
    if model == 'AverageValueNaive':
        from autots.models.basics import AverageValueNaive
        if parameters == {}:
            return AverageValueNaive(frequency=frequency,
                prediction_interval=prediction_interval)
        else:
            return AverageValueNaive(frequency=frequency,
                prediction_interval=prediction_interval, method=parameters[
                'method'])
    if model == 'GLS':
        from autots.models.statsmodels import GLS
        return GLS(frequency=frequency, prediction_interval=prediction_interval
            )
    if model == 'GLM':
        from autots.models.statsmodels import GLM
        if parameters == {}:
            model = GLM(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                random_seed=random_seed, verbose=verbose)
        else:
            model = GLM(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                random_seed=random_seed, verbose=verbose, family=parameters
                ['family'])
        return model
    if model == 'ETS':
        from autots.models.statsmodels import ETS
        if parameters == {}:
            model = ETS(frequency=frequency, prediction_interval=
                prediction_interval, random_seed=random_seed, verbose=verbose)
        else:
            model = ETS(frequency=frequency, prediction_interval=
                prediction_interval, damped=parameters['damped'], trend=
                parameters['trend'], seasonal=parameters['seasonal'],
                seasonal_periods=parameters['seasonal_periods'],
                random_seed=random_seed, verbose=verbose)
        return model
    if model == 'ARIMA':
        from autots.models.statsmodels import ARIMA
        if parameters == {}:
            model = ARIMA(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                random_seed=random_seed, verbose=verbose)
        else:
            model = ARIMA(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country, p=
                parameters['p'], d=parameters['d'], q=parameters['q'],
                regression_type=parameters['regression_type'], random_seed=
                random_seed, verbose=verbose)
        return model
    if model == 'FBProphet':
        from autots.models.prophet import FBProphet
        if parameters == {}:
            model = FBProphet(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                random_seed=random_seed, verbose=verbose)
        else:
            model = FBProphet(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                holiday=parameters['holiday'], regression_type=parameters[
                'regression_type'], random_seed=random_seed, verbose=verbose)
        return model
    if model == 'RollingRegression':
        from autots.models.sklearn import RollingRegression
        if parameters == {}:
            model = RollingRegression(frequency=frequency,
                prediction_interval=prediction_interval, holiday_country=
                holiday_country, random_seed=random_seed, verbose=verbose)
        else:
            model = RollingRegression(frequency=frequency,
                prediction_interval=prediction_interval, holiday_country=
                holiday_country, holiday=parameters['holiday'],
                regression_type=parameters['regression_type'], random_seed=
                random_seed, verbose=verbose, regression_model=parameters[
                'regression_model'], mean_rolling_periods=parameters[
                'mean_rolling_periods'], std_rolling_periods=parameters[
                'std_rolling_periods'])
        return model
    if model == 'UnobservedComponents':
        from autots.models.statsmodels import UnobservedComponents
        if parameters == {}:
            model = UnobservedComponents(frequency=frequency,
                prediction_interval=prediction_interval, holiday_country=
                holiday_country, random_seed=random_seed, verbose=verbose)
        else:
            model = UnobservedComponents(frequency=frequency,
                prediction_interval=prediction_interval, holiday_country=
                holiday_country, regression_type=parameters[
                'regression_type'], random_seed=random_seed, verbose=
                verbose, level=parameters['level'], trend=parameters[
                'trend'], cycle=parameters['cycle'], damped_cycle=
                parameters['damped_cycle'], irregular=parameters[
                'irregular'], stochastic_trend=parameters[
                'stochastic_trend'], stochastic_level=parameters[
                'stochastic_level'], stochastic_cycle=parameters[
                'stochastic_cycle'])
        return model
    if model == 'DynamicFactor':
        from autots.models.statsmodels import DynamicFactor
        if parameters == {}:
            model = DynamicFactor(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                random_seed=random_seed, verbose=verbose)
        else:
            model = DynamicFactor(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                regression_type=parameters['regression_type'], random_seed=
                random_seed, verbose=verbose, k_factors=parameters[
                'k_factors'], factor_order=parameters['factor_order'])
        return model
    if model == 'VECM':
        from autots.models.statsmodels import VECM
        if parameters == {}:
            model = VECM(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                random_seed=random_seed, verbose=verbose)
        else:
            model = VECM(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                regression_type=parameters['regression_type'], random_seed=
                random_seed, verbose=verbose, deterministic=parameters[
                'deterministic'], k_ar_diff=parameters['k_ar_diff'])
        return model
    if model == 'VARMAX':
        from autots.models.statsmodels import VARMAX
        if parameters == {}:
            model = VARMAX(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                random_seed=random_seed, verbose=verbose)
        else:
            model = VARMAX(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                random_seed=random_seed, verbose=verbose, order=parameters[
                'order'], trend=parameters['trend'])
        return model
    if model == 'GluonTS':
        from autots.models.gluonts import GluonTS
        if parameters == {}:
            model = GluonTS(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                random_seed=random_seed, verbose=verbose, forecast_length=
                forecast_length)
        else:
            model = GluonTS(frequency=frequency, prediction_interval=
                prediction_interval, holiday_country=holiday_country,
                random_seed=random_seed, verbose=verbose, gluon_model=
                parameters['gluon_model'], epochs=parameters['epochs'],
                learning_rate=parameters['learning_rate'], forecast_length=
                forecast_length)
        return model
    if model == 'TSFreshRegressor':
        from autots.models.tsfresh import TSFreshRegressor
        if parameters == {}:
            model = TSFreshRegressor(frequency=frequency,
                prediction_interval=prediction_interval, holiday_country=
                holiday_country, random_seed=random_seed, verbose=verbose)
        else:
            model = TSFreshRegressor(frequency=frequency,
                prediction_interval=prediction_interval, holiday_country=
                holiday_country, random_seed=random_seed, verbose=verbose)
        return model
    else:
        raise AttributeError("Model String '{}' not a recognized model type"
            .format(model))
