Turn this into a full-featured API client