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.