
  .StandardOrder <- c("Gender", "Age", "Label", "Camp", "Campaign", "Ad", "LabelID", "CampaignID", "AdID")


  ingestAllRDS <- function(folder=".", pos=1, e=parent.frame(pos), verbose=FALSE, useFullPath=!(folder==".")) {
    force(e)
    if (verbose)
      message("e is ", capture.output(e), " !")
    pat <- "\\.RDS$"

    files <- dir(folder, pattern=pat, ignore.case=TRUE, full=useFullPath)
    objs <- gsub(pat, "", basename(files))
    for (i in seq_along(files))
        assign(objs[[i]], readRDS(file=files[[i]] ), envir=parent.frame(pos))
    return(TRUE)
  }

  ingestAllRDS(getwd())


makeAggName <- function(byVal, date, base=c("fb","agg"), makeLower=TRUE, sep="_") {
  if (missing(date))
  {
    date <- TRUE
    mc <- as.character(as.expression(match.call()))
    warning("Please update code to include `date=TRUE` (no longder added by default). Call was: \n\n", mc, "\n\n")
  }
  # Drop any blank values
  byVal <- byVal[!byVal==""]
  # Determine if tolower will be used. If not, dummy func of identity
  tolower <- if(makeLower) tolower else identity
  paste0(tolower(c(base, if(date) "Date", sub("ID$", "", sort(byVal)))), collapse=sep)
}