basic design of APIs