De forskellige cases kunne måske trækkes ud i funktioner for sig