building out core functionality

 - abstracted out batch vs single responses
 - exposed error api
 - handling more variations of the "graph" response format