aaagh can't just move delete like that due to our RNG scrambling... reverting on branch. we'll just have to take our chances w/ the bad code
pub type GearId = u16;
pub trait GearData {}
pub trait GearDataProcessor<T: GearData> {
fn add(&mut self, gear_id: GearId, gear_data: T);
}
pub trait GearDataAggregator<T: GearData> {
fn find_processor(&mut self) -> &mut GearDataProcessor<T>;
}