
Version 4.1
	o Fixed: bug in theory.evaluation().
	o Fixed: bug in rob.cases().
Version 4.0
	o Fixed: bug in cluster() showing an NaN result in divisions by 0 in small clusters.
	o Improved: the formulas and output of the smmr() function for sufficiency has been updated to reflect the latest version in case selection guidelines in Schneider, Carsten Q. 2021. Set-Theoretic Multi-Method Research: A Guide to Combining QCA and Case Studies. Cambridge: Cambridge University Press. 
	o New: the smmr() function now includes analyses of necessity in line with the latest version in case selection guidelines in Schneider, Carsten Q. 2021. Set-Theoretic Multi-Method Research: A Guide to Combining QCA and Case Studies. Cambridge: Cambridge University Press. 
Version 3.0
	o Improved: the range of functions (rob.calibrange, rob.inclrange, rob.ncutrange, rob.cases, rob.corefit, rob.fit, rob.xyplot, rob.singletest) for performing the robustness test protocol in Oana and Schneider (2021) have been updated to reflect new changes in the protocol;
	o Improved: the output of the smmr() function has been updated to reflect the changes in case selection guidelines in Schneider, Carsten Q. 2021. Set-Theoretic Multi-Method Research: A Guide to Combining QCA and Case Studies. Cambridge: Cambridge University Press. 
	o Fixed: bug in xy.plot() showing an error for max.overlaps has been fixed.
	o Improved: function cluster.plot() can now also print units labels.
Version 2.6
	o New: function stargazerTT() can be used for exporting truth tables in text, latex, and html format;
	o New: function stargazerSol() can be used for exporting truth tables in text, latex, and html format;
	o New: replication data for the material in the Oana, Schneider and Thomann (2020) book have been added to the package;
	o New: a range of functions (rob.calibrange, rob.inclrange, rob.ncutrange, rob.cases, rob.corefit, rob.fit, rob.xyplot) have been added for performing the robustness test protocol in Oana and Schneider (unpublished manuscript);
	o Fixed: bug in esa that sometimes did not identify some conditions in a truth table as 0s;
	o Improved: obsolete and helper functions have been moved in the background (such as the functions for SMMR);
	o Changed: function mmr() has now been renamed to smmr();
Version 2.5
	o Changed: function indirectCalibration() now returns an object of class "numeric", instead of class "SetMethods"
	o Improved: functions xy.plot() and pimplot() has a new argument crisp for 		plotting relations between crisp sets.
	o Fixed: function pimplot() now recognizes negation (both with ~ and with neg.out) 	in solutions (either from minimize or from superSubset) in an automatic fashion. Argument neg.out is now obsolete.
	o Fixed: function pimplot() now recognizes the use (or not) of tilde automatically;
	o Improved: function pimplot() now plots deviant cases consistency in kind for 		sufficiency and necessity with a different shape.
	o Improved: function mmr(), arguments use.tilde and neg.out are now deprecated. The functions now recognise these automatically.
	o New: function cluster() now combines all the previous cluster diagnostics functions. It also includes new options for turning off the printing of within parameters and bug fixes;
	o New: function cluster.plot() now allows to plot consistencies and coverages across clusters.
Version 2.4.1
	o Changed: function indirectCalibration() now returns an object of class 	"numeric", instead of class "SetMethods"
Version 2.4
	o Changed: xy.plot now works with names of columns in a specified dataset
	o New: xy.plot and pimplot have a logical argument "jitter" for not overlapping 	labels
	o New: xy.plot and pimplot have arguments "font", "fontface", "size", and "labcol" 	for formatting case labels
	o Improved: the output of the theory.evaluation() function now also shows the 		Boolean expression of the intersections between theory and empirics
	o Improved: function theory.evaluation() and all related functions now also have 	the argument "use.tilde" for inputing expressions or solutions that don't use 		tilde for negation	
	o New: function negateExp() for negating Boolean expressions
	o New: function intersectExp() for intersecting Boolean expressions
	o New: function mmr() and its related functions now have a logical argument 	"use.tilde" and allows solutions in which negation is denoted by either lower case 	or a tilde
	o New: function ambig.cases() that identifyies cases that score exactly 0.5 in one 	or more conditions;
 	o New: function skew.check() for diagnosing skewness;
	o New: function LR.intersect() to make it easier to intersect SAs and ECs for the 	outcome and its negation;
	o Improved: function QCAfit() now automatically prints condition names and 		performs the analysis for their negation;
	o Changed: function QCAfit() now has option necessity=TRUE as default;
	o New: function property.cube() that produces a 3D scatter plot;
	o Fixed: bug function mmr() and its related functions working with the focal 		conjunct principle giving an error when applied to a solution with a single term
	o Improved: the output of the mmr() function for typical cases using the focal 		conjunct principle is now reordered to show uniquely covered cases before the rank
Version 2.3.1
    	o Improved: the output of the theory.evaluation function now also shows percentage 	of cases in each intersection between empirics and theory that have and don't have 	the outcome
	o Changed: argument "imposs_LR" in function esa() renamed to "untenable_LR"
	o Improved: the output for deviant cases coverage sufficiency is now ordered by 	truth table row.
Version 2.3
    	o New: new function mmr() replaces all case identification functions (individual 	functions are still available as single functions in this version) and can be used 	to select best available cases for single case studies and best pairs of matching 	cases for comparative case studies
	o New: new function cluster() can now return pooled, within, and between 		consistencies for the relationship between two sets, for an object of class "qca", 	and for a Boolean expression   
    	o New: function theory.evaluation() can now perform all theory evaluation analyses  	together, showing membership of cases in the intersections between theory and 		empirics, the names and proportion of cases that fall in these, and parameters of 	fit for the various intersections. The output is an object of class "theoryeval"
	o New: function cases.suf.typ.fct() embedded in the mmr() function lists typical 	cases for sufficiency for each focal conjunct, rather than for the whole term
	o New: function QCAradar() can now produce radar visualisation for "qca" solution 	objects and for Boolean expressions	
	o New: function QCAfit() can now accept "qca" solution objects and truth table 		rows as input
    	o Changed: former function theory.evaluation() is now called theory.data()
	o Changed: former function cluster.eqmcc() is now called cluster.minimize()
	o Changed: argument "intermed" is now deprecated in all the MMR, cluster, theory 	evaluation functions
    	o Changed: all the datasets in the package are now renamed in a more simple way
    	o Improved: argument "sol" can now work with more complex structures of model 		ambiguity.
	o Improved: documentation for various functions
    	o Fixed: bug in esa() to work with necessary unions of conditions in argument 	“nec_cond” and to accept more complex expressions involving both unions and 		intersections

Version 2.1
    o New: pimplot() can now plot specific truth table rows with argument “ttrows”
    o New: pimplot() can now plot all truth table rows above a certain consistency
      threshold with argument “incl.tt”	
    o New: pimplot() can now plot necessity results obtained from superSubset() in 
      package QCA with argument “necessity” set to TRUE and by specifying the “sS” 
      object in argument “results”
    o New: function cases.theory.evaluation() now also shows percentages of cases
      in the various intersections between theory and empirics
    o Improved: function cases.theory.evaluation() can now be saved in an object of
      class “casestheoryeval” which allows for a more user-friendly output
    o Improved: documentation for various functions
    o Improved: functions QCAfit(), pimplot(), xy.plot(), and xy.plot.lat() also 
      show the new parameter of fit Haesebrouck’s consistency as Cons.Suf(H)
    o Changed: in function QCAfit() argument “negation” renamed to “neg.out”
    o Changed: in function QCAfit() the parameter of fit PRODUCT is now optional 
      and can be shown with logical argument “product” 
    o Fixed: esa() can now work with necessary unions of conditions in argument
      “nec_cond”	
    o Fixed: argument “imposs_LR” in function esa() can now work with intersections
      of conditions
    o Fixed: results from matching functions matches.suf.typtyp() and matches.suf.typiir()
      can now be saved in an object of class “matchessuf”
    o Fixed: bug in pimdata and functions relying on it, now these also work with 
      intermediate solutions that only have one sufficient term

Version 2.0
    o New: functions for MMR that can select single cases for case studies: 
      cases.suf.dcn(), cases.suf.dcv(), cases.suf.iir(), cases.suf.typ(),
      cases.suf.typ.most(), cases.suf.typ.unique()
    o New: functions for MMR that can select pairs of cases for comparative case studies: 
      matches.suf.typdcn(), matches.suf.dcviir()
    o New: functions for MMR that can select pairs of cases based on the INUS 
      principles; matches.suf.typtyp() matches typical cases for each conjunct in a 
      sufficient term and matches.suf.typiir() matches typical and individually irrelevant
      cases for each conjunct in a sufficient term
    o New: datasets Schneider and SchneiderLong are added to the package	
    o New: new function cluster.diagnostics() can perform parameter of diagnostics for 
      clustered data in the relationship between two single conditions
    o New: new function cluster.eqmcc() can perform parameter of diagnostics for 
      clustered data for analyses of sufficiency using results obtained from the eqmcc()
      function in package QCA
    o New: new function theory.evaluation() shows membership of cases in the intersections 
      between a theory specified in boolean terms and an empirical solution obtained from 
      the eqmcc()function in package QCA
    o New: new function theory.fit() shows parameters of fit for the intersections 
      between theory and empirical results using the object produced by the function
      theory.evaluation()
    o New: new function cases.theory.evaluation() shows the names of cases in the 
      intersections between theory and empirical results using the object produced by the 
      function theory.evaluation()
    o New: new function esa() performs Enhanced Standard Analysis and returns a new truth 
      table in which all truth table rows are set to outcome value 0 that would otherwise 
      present untenable assumptions.
    o Improved: documentation for all functions across the package
    o Improved: all MMR functions across the package have follow improved formulas and
      have an improved output
    o Fixed: bugs in various functions across the package	
  

