I prefer to keep the signature close to the definition
Use existential types for heterogenous monster list