R/qtlbim package (http://www.ssg.uab.edu/qtlbim)
1.04-x	Internal version; conversion from R/bim to R/qtlbim
1.05-x	Beta release.
1.6.0	Fix C code for Mac OSX; improved chromosome name handling.
1.6.1	Fix examples; improved covariate graphics.
1.6.2	Fix generic method use in example pages;
	fix chromosome name handling.
1.6.3	Shorten examples; fix degrees of freedom and LPD in scan;
	upgrade to R/qtl 1.04.
1.6.4	Minor logic errors; check output.dir exists.
1.6.5	Important change: residual variance now has uniform prior.
	Minor fixes to scan and other routines; added lty to plot.qb.scanone.
1.6.6	Add routines for multiple linked loci
1.6.7	Improve handling patterns; add close, closedist.
1.6.8	Fix bugs and extend features for linked loci and epistasis.

1.7.0	Major reorganization of qb objects: contains MCMC runs, cross object.
	All routines now have integrated objects that do not require
	external objects to be retained separately. Users should
	notice dramatic improvements in speed and reduced storage needs.

	New qb object contains the following:
	    args            most former values of qb object
			    "subset" reordering done once now
			    "subset$region" is now "args$region"
			    "yvalue", "fixcoef", "rancoef" are in cross.object
			    new values include all qb.genoprob options
			    other values may be dropped/reorganized later
	    cross.object    clean() of cross object
	    iterdiag,mainloci,pairloci,gbye,covariates
			    MCMC iterations
			    (pairloci,gbye,covariates NULL if not used)

	Required internal routines for qb object elements:
	qb.get(qbObject, element, warn = TRUE, ...)
		get element from qb object (warn if legacy qb object)
		ALWAYS use for elements of qb object except:
		    n.iter, cross, cross.object
	element = "cross":
	qb.cross.class(qbObject)  replaces qb.get(qbObject, "cross").
	element = "cross.object":
	qb.cross(qbObject) to get cross object with genoprob values.
	qb.cross(qbObject, genoprob = FALSE) improves speed if
		genoprob values not needed.
	element = "n.iter":
	qb.niter(qbObject) returns number of iterations.

	Other useful routines
	qb.legacy(qbObject, remove = FALSE) updates legacy qb object
			    remove external MCMC samples if TRUE
	is.legacy(qbObject) returns TRUE/FALSE
	qb.get.legacy(qbOjbect, element, ...) get elements from legacy
					      qb object (called by qb.get)
	qb.nqtl(qbObject, ...) returns number of QTL per iteration.
	qb.find.chr(qbObject, chr, ...) translates char or logical
		form to numeric (note sort.chr and drop.duplicate options).
	qb.remove(qbObject) remove external MCMC and qb object
			    qbnew <- qb.legacy(qbold, remove = TRUE)
			    or
			    qbnew <- qb.legacy(qbold)
			    qb.remove(qbold)
	qb.recover(...) recovers legacy object as new

	Deprecated routines (still present for now):
	qb.load() replaced by data() (for package qb objects) or
			      load() (for user-created qb objects)
		  gives warning that legacy object being converted
		  does not remove old MCMC external files
	qb.save() replaced by save()

1.7.1	qb.scanone() output condense to extended qtl::scanone() format.
	qb.split.chr() splits chromosomes for linked QTL.

	fixed minor bugs related to chr= and other things.
1.7.2	prepare for CRAN release
	fix bugs related to new qb.scanone format
	qb.legacy()
		upgrade storage of MCMC samples to anticipate multiple traits
		remove external directory of MCMC samples
		routine can now be called multiple times
