This seems silly now. I think the constructor should just take an array of Endpoints