introduce UniverseCache to keep all the caching logic together. also fixes some tests