You changed the code to simply remove all layers when a layer is switched.  This is definitely not what we want.  Someone may use the widget to allow base layer swapping, but want to manage additional layers on top of that themselves.  With this change, that's no longer possible.  The work-around would be to have each  viewModel always return the same set of imagery providers, this way on remove, we only remove the ones that we originally added.  Since we'll use instance comparison, this should work even if the added provider was manually moved around by the user.