Writing the API from scratch again