    fn mutate(&mut self, innovation_id: &mut usize, p: &NeatParams);

    /// `fittest` is true if `other` is more fit.
    fn mate(&self, other: &Self, fittest: bool, p: &NeatParams) -> Self;

    /// TODO: how should it be implemented for e.g. a composed organism?