pub fn animate<T, C>(
    left: &[T],
    right: &[T],
    procedure: Procedure
) -> Result<C, ()>where
    T: Animate,
    C: FromIterator<T>,