clearer logic in loadEndpoint: only one of the three options can be used