# From version 0.2.0. to 0.2.1:

- Improved mesh coarsening. This is by far the biggest change between versions. Both 2D and 3D coarsening are affected. Coarse mesh quality for isotropic meshes has improved significantly, as a result of changing the way coarse mesh vertices are selected. Vertex removal efficiency is now better in 3D, with typically fewer than one vertex in a thousand not removed as requested. Anisotropic coarsening in 2D working very well; in 3D, anisotropic coarsening is miserably poor because of challenges with mesh connectivity.
- Corrected a series of small errors in mesh quality assessment. Minimum solid angle and the aspect ratio measures now work in 3D. Also, ratio of incircle to circumcircle radius is now normalized properly in 2D.
- Internal changes in how smoothing is handled. These changes were made to allow solvers to call GRUMMP meshing routines, including smoothing, without needing to know how GRUMMP handles things internally.
- Re-introduced the ``precious boundary'' flag. By popular demand, the flag that tells `tetra` not to modify the mesh boundary has been added back to the code. Use this flag only in duress, because:

  - Initial tetrahedralization still adds points to the boundary when it needs to.
  - There are no mesh quality guarantees, or even practical expectations, unless points can be inserted on the boundary. Things may work out for you, and they may not.
- Slightly improved diagnostics and on-the-fly repair for bad input files. Some 3D input files with mis-oriented triangles can now be fixed. Others are identified as bad input files. Unfortunately, some can still escape detection and cause code crashes after surface recovery.
- Documentation now includes overview of algorithms used in GRUMMP.
- Fixed a couple of egregious bugs in the rarely-exercised code for reading 3D meshes in cell-vertex (FEM) data structure.
- Fixed a small but annoying bug that made new `gcc` versions fail to compile.