summary.ARCHmXAdditive <- function(object, ...) {
  p <- object$p
  alphas <- object$alphas
  covariates <- object$covariates
  # p_values <- object$p_values
  sig_levels <- rep("", length(object$p.values))
  sig_levels[object$p.values <= 0.1] <- "."
  sig_levels[object$p.values <= 0.05] <- "*"
  sig_levels[object$p.values<= 0.01] <- "**"
  sig_levels[object$p.values <= 0.001] <- "***"
  
  cat("ARCHmXAdditive Model Summary:\n\n")
  #cat("Total training time:", object$train_time, "seconds.\n\n")
  
  cat("ARCH Coefficients:\n")
  alpha_names <- rep("alpha", p)
  for (i in 1:p){
    alpha_names[i] <- paste("alpha_", i, sep="")
  }
  alphas_df <- data.frame(
    names = alpha_names,
    alphas = alphas,
    pvalue = object$p.values[1:p],
    siglevel = sig_levels[1:p]
  )
  
  colnames(alphas_df)[ncol(alphas_df)] <- "" # when we have a column for p values
  
  print(alphas_df, row.names=FALSE)
  
  
  cat("\nResidual Deviation:", object$residual_deviation,"\n")
  
  if (length(covariates) > 0 && length(object$p.values) > p){ # WILL BE NULL FOR NOW for alpha p-values
    cat("\nExogenous Covariates Coefficients:\n")
    n_cov <- length(covariates)
    cov_names <- rep("", n_cov)
    for (i in 1:n_cov) {
      cov_names[i] <- paste("Covariate ", covariates[i], sep="")
    }
    covariate_df <- data.frame(
      names = cov_names,
      pvalue = object$p.values[(p + 1):length(object$p.values)],
      siglevel = sig_levels[(p + 1):length(sig_levels)]
    )
    colnames(covariate_df)[ncol(covariate_df)] <- ""
    print(covariate_df, row.names=FALSE)
  }
  else {
    cat("Covariate significance hypothesis test not run.\n")
  }
  cat("---\n")
  cat("Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n")  
  
  
  cat("\n Information Criteria:\n")
  cat("AIC:", object$AIC,"\n")
  cat("BIC:", object$BIC,"\n")
  
}