data CardSym = Card1 -- | Card2 | Card3 | Card4 etc etc data TypeSym = Angel | Character | MainCharacter | Instrumentality | Battle | Put | Drama | Eva data CardInfo = CardInfo { ciName :: String , ciFaction :: Faction , ci -- etc etc etc etc etc } data CardMeta = CardMeta { cmOwner :: PlayerId } type CardId = Integer type PlayerId = Integer class SymLookup where getSym :: CardId -> CardSym class MetaLookup where getMeta :: CardId -> CardMeta class CardLookup where getCard :: CardSym -> CardInfo