coding the API