ICard, ICharacter, etc. These are all marked with an attribute, ContentType.minecraf:dirt, or create:pipe. So there is also IExpantion. To mod the game you create a new IExpantion, point all your content towards it and the game loads it keeping track of all the content and preventing duplicates. I made a class to handle this, Identifier<T>. T (i am sure there is a proper name for this, i don't know it) represents the ContentType, like ICard or ICharacter and it has two internal Types. One representing an IExpantion and one representing whatever is being saved.Identifier<ICard>(typeof(TheBestMod), typeof(AceOfSpades)). ICard is the content type, TheBestMod is the expansion and AceOfSpades is the content being added.ICard, ICharacter, etc) to require their children, the actual content, to store their identifier as a static property. Then i can do AceOfSpades.Identifier to get that identifier.