Here is a generic .First.lib() function for loading settings
 with package. It also (almost) assures that the package is detached
 when R finishes. See onSessionExit() why it is not guaranteed! The almost generic .Last.lib() function, which will prompt
 user to save settings, is called when a package is detached.
 It is custom to put these functions in a file named zzz.R.
 .First.lib():
 .First.lib <- function(libname, pkgname) {
    # Write a welcome message when package is loaded
    pkg <- Package(pkgname);
    assign(pkgname, pkg, pos=getPosition(pkg));
    # Read settings file ".Settings" and store it in package
    # variable 'Settings'.
    varname <- paste(pkgname, "Settings");
    basename <- paste(".", varname, sep="");
    settings <- Settings$loadAnywhere(basename, verbose=TRUE);
    if (is.null(settings))
      settings <- Settings(basename);
    assign(varname, settings, pos=getPosition(pkg));
    # Detach package when R finishes, which will save package settings too.
    onSessionExit(function(...) detachPackage(pkgname));
    packageStartupMessage(getName(pkg), " v", getVersion(pkg),
        " (", getDate(pkg), ") successfully loaded. See ?", pkgname,
        " for help.\n", sep="");
  } # .First.lib()
 .Last.lib():
 .Last.lib <- function(libpath) {
    pkgname <- "";
    # Prompt and save package settings when package is detached.
    varname <- paste(pkgname, "Settings", sep="");
    if (exists(varname)) {
      settings <- get(varname);
      if (inherits(settings, "Settings"))
        promptAndSave(settings);
    }
  } # .Last.lib()