The entire dependency system can be simplified by exploiting forward declaration of structs; this will render type erasure of model names unnecessary.