changed Weave to derive instances from EitherT