add traverse for Either trait