This is really ugly so suggestions welcome while preserving coverage.