Changes in version 2.8.10:

    o   ChAMP paper get published on Bioinformatics.

    o   Fixed CSS problem in vignette, it's actually not a bug!.

Changes in version 2.8.8:

    o   Added "force" parameter in champ.load(), which can be used for
	 "minfi" loading method, if your data comes from different arrays,
	 force parameter would allow minfi's read.meth.exp function to
	 extract their commmon probes and continue analysis.

Changes in version 2.8.7:

    o   Make champ.import() more robust for modifed csv file.

Changes in version 2.8.5:

    o   champ.DMP() works on numeric variable now

    o   champ.DMP() do pairewise comparison between each two categorical
	 phenotypes.

    o   goseq was replaced by gometh.

    o   DMP.GUI() is modified heavily.

    o   SVD plot added legend.

    o   "minfi" loading method fixed.

    o   vignette of ChAMP and github Demo pages updated.

    o   Added some figures from GSE40279 in vignette.

Changes in version 2.8.3:

    o   Updated zzz.R file, which means the loading messages would be
	 different.

    o   Fixed a warning in champ.load.Rd file.

    o   Fixed bug in champ.filter(), if filerDetP is false, update pd part
	 would faile because of lacking of RemainSample variable.

Changes in version 2.8.2:

    o   Updated EPIC annotation to B4 version. The B4 version is downloaded
	 from illumina website.

    o   Added one new parameter "method" in champ.load() function, which
	 allows user to choose which method they want to use to read data.
	 ChAMP or Minfi.

    o   champ.filter() has been totally recoded, now user can do any
	 filtering on any data set they want. Merely champ.filter() is
	 focused to take champ.import() result as input and generate
	 filtered beta value for future analysis.

    o   Provide Whole New function champ.import() to read IDAT file to R,
	 which is similar to minfi's read.meth.exp() function.

    o   Added more strict checking in champ.runCombat(), now
	 champ.runCombat() would check if your variable and batches conflict
	 with each other.

    o   Removed some useless code in champ.DMR() to make it faster.

Changes in version 2.8.1:

    o   Added impute option for champ.load().

    o   Add ProbeCutoff and SampleCutoff parameters in champ.load().

    o   Added Demo on github: In respond to our reviewer's question and to
	 make users have better understanding on our package, we processed
	 ChAMP fully on some data sets and saved all messages shown during
	 processing. We upload these information to
	 [github](https://github.com/JoshuaTian/ChAMPDemos).

Changes in version 2.8.0:

    o   DMRcate pacakge get updated, Error like "Error in if (nsig == 0) :
	 missing value where TRUE/FALSE needed" has been solved.  In
	 champ.load(), instead of replacing all 0 and negative value into
	 0.0001, we relplace them as smallest positive now.  Fixed
	 warnings() in GUI() functions.  In champ.runCombat() function,
	 removed restriction on factors like Sample_Group. Also, added
	 "variable" parameter so that user may assign other variables other
	 then "Sample_Group".  Modified champ.DMR() function, for
	 ProbeLasso, there is no need to input myDMP anymore, ProbeLasso
	 function would calculate inside the function.