typeid() doesn't seem to downcast, so just check types in the take_settings_from...