This splits up the types and supporting code for defining layers from the code for generating layers for a given mushroom.