Refactor to seperate out core client classes from HttpClient stuff