+Berry.berry_firmness = relation(BerryFirmness, backref='berries')
+Berry.firmness = association_proxy('berry_firmness', 'name')
+Berry.flavors = relation(BerryFlavor, order_by=BerryFlavor.contest_type_id, backref='berry')
+Berry.natural_gift_type = relation(Type)
+
+BerryFlavor.contest_type = relation(ContestType)
+
+ContestCombo.first = relation(Move, primaryjoin=ContestCombo.first_move_id==Move.id,
+ backref='contest_combo_first')
+ContestCombo.second = relation(Move, primaryjoin=ContestCombo.second_move_id==Move.id,
+ backref='contest_combo_second')
+
+Encounter.location_area = relation(LocationArea, backref='encounters')
+Encounter.pokemon = relation(Pokemon, backref='encounters')
+Encounter.version = relation(Version, backref='encounters')
+Encounter.slot = relation(EncounterSlot, backref='encounters')
+
+EncounterConditionValue.condition = relation(EncounterCondition, backref='values')
+
+Encounter.condition_value_map = relation(EncounterConditionValueMap, backref='encounter')
+Encounter.condition_values = association_proxy('condition_value_map', 'condition_value')
+EncounterConditionValueMap.condition_value = relation(EncounterConditionValue,
+ backref='encounter_map')
+
+EncounterSlot.terrain = relation(EncounterTerrain, backref='slots')
+
+EncounterSlot.condition_map = relation(EncounterSlotCondition, backref='slot')
+EncounterSlot.conditions = association_proxy('condition_map', 'condition')
+EncounterSlotCondition.condition = relation(EncounterCondition,
+ backref='slot_map')
+
+EvolutionChain.growth_rate = relation(GrowthRate, backref='evolution_chains')
+
+Experience.growth_rate = relation(GrowthRate, backref='experience_table')
+
+Generation.canonical_pokedex = relation(Pokedex, backref='canonical_for_generation')
+Generation.versions = relation(Version, secondary=VersionGroup.__table__)
+Generation.main_region = relation(Region)
+
+Item.berry = relation(Berry, uselist=False, backref='item')
+Item.fling_effect = relation(ItemFlingEffect, backref='items')
+Item.category = relation(ItemCategory)
+Item.pocket = association_proxy('category', 'pocket')
+
+ItemCategory.items = relation(Item, order_by=Item.name)
+ItemCategory.pocket = relation(ItemPocket)
+
+ItemPocket.categories = relation(ItemCategory, order_by=ItemCategory.name)
+
+Location.region = relation(Region, backref='locations')
+
+LocationArea.location = relation(Location, backref='areas')
+
+Machine.version_group = relation(VersionGroup)
+
+Move.contest_effect = relation(ContestEffect, backref='moves')
+Move.contest_combo_next = association_proxy('contest_combo_first', 'second')
+Move.contest_combo_prev = association_proxy('contest_combo_second', 'first')
+Move.contest_type = relation(ContestType, backref='moves')
+Move.damage_class = relation(MoveDamageClass, backref='moves')
+Move.flags = association_proxy('move_flags', 'flag')
+Move.flavor_text = relation(MoveFlavorText, order_by=MoveFlavorText.generation_id, backref='move')
+Move.foreign_names = relation(MoveName, backref='pokemon')
+Move.generation = relation(Generation, backref='moves')
+Move.machines = relation(Machine, backref='move')
+Move.move_effect = relation(MoveEffect, backref='moves')
+Move.move_flags = relation(MoveFlag, backref='move')
+Move.super_contest_effect = relation(SuperContestEffect, backref='moves')
+Move.super_contest_combo_next = association_proxy('super_contest_combo_first', 'second')
+Move.super_contest_combo_prev = association_proxy('super_contest_combo_second', 'first')
+Move.target = relation(MoveTarget, backref='moves')
+Move.type = relation(Type, backref='moves')
+
+Move.effect = rst.MoveEffectProperty('effect')
+Move.priority = association_proxy('move_effect', 'priority')
+Move.short_effect = rst.MoveEffectProperty('short_effect')
+
+MoveEffect.category_map = relation(MoveEffectCategoryMap)
+MoveEffect.categories = association_proxy('category_map', 'category')
+MoveEffectCategoryMap.category = relation(MoveEffectCategory)
+
+MoveFlag.flag = relation(MoveFlagType)
+
+MoveFlavorText.generation = relation(Generation)
+
+MoveName.language = relation(Language)
+
+Nature.decreased_stat = relation(Stat, primaryjoin=Nature.decreased_stat_id==Stat.id,
+ backref='decreasing_natures')
+Nature.increased_stat = relation(Stat, primaryjoin=Nature.increased_stat_id==Stat.id,
+ backref='increasing_natures')
+Nature.hates_flavor = relation(ContestType, primaryjoin=Nature.hates_flavor_id==ContestType.id,
+ backref='hating_natures')
+Nature.likes_flavor = relation(ContestType, primaryjoin=Nature.likes_flavor_id==ContestType.id,
+ backref='liking_natures')
+Nature.battle_style_preferences = relation(NatureBattleStylePreference,
+ order_by=NatureBattleStylePreference.move_battle_style_id,
+ backref='nature')
+Nature.pokeathlon_effects = relation(NaturePokeathlonStat, order_by=NaturePokeathlonStat.pokeathlon_stat_id)
+
+NatureBattleStylePreference.battle_style = relation(MoveBattleStyle, backref='nature_preferences')
+
+NaturePokeathlonStat.pokeathlon_stat = relation(PokeathlonStat, backref='nature_effects')
+
+Pokedex.region = relation(Region, backref='pokedexes')
+Pokedex.version_groups = relation(VersionGroup, secondary=PokedexVersionGroup.__table__, backref='pokedexes')
+
+Pokemon.abilities = relation(Ability, secondary=PokemonAbility.__table__,
+ order_by=PokemonAbility.slot,
+ backref='pokemon')
+Pokemon.formes = relation(Pokemon, primaryjoin=Pokemon.id==Pokemon.forme_base_pokemon_id,
+ backref=backref('forme_base_pokemon',
+ remote_side=[Pokemon.id]))
+Pokemon.pokemon_color = relation(PokemonColor, backref='pokemon')
+Pokemon.color = association_proxy('pokemon_color', 'name')
+Pokemon.dex_numbers = relation(PokemonDexNumber, backref='pokemon')
+Pokemon.default_form_sprite = relation(PokemonFormSprite,
+ primaryjoin=and_(
+ Pokemon.id==PokemonFormSprite.pokemon_id,
+ PokemonFormSprite.is_default==True,
+ ),
+ uselist=False)
+Pokemon.egg_groups = relation(EggGroup, secondary=PokemonEggGroup.__table__,
+ order_by=PokemonEggGroup.egg_group_id,
+ backref='pokemon')
+Pokemon.evolution_chain = relation(EvolutionChain, backref='pokemon')
+Pokemon.evolution_method = relation(EvolutionMethod)
+Pokemon.evolution_children = relation(Pokemon, primaryjoin=Pokemon.id==Pokemon.evolution_parent_pokemon_id,
+ backref=backref('evolution_parent',
+ remote_side=[Pokemon.id]))
+Pokemon.flavor_text = relation(PokemonFlavorText, order_by=PokemonFlavorText.pokemon_id, backref='pokemon')
+Pokemon.foreign_names = relation(PokemonName, backref='pokemon')
+Pokemon.pokemon_habitat = relation(PokemonHabitat, backref='pokemon')
+Pokemon.habitat = association_proxy('pokemon_habitat', 'name')
+Pokemon.items = relation(PokemonItem, backref='pokemon')
+Pokemon.generation = relation(Generation, backref='pokemon')
+Pokemon.shape = relation(PokemonShape, backref='pokemon')
+Pokemon.stats = relation(PokemonStat, backref='pokemon')