initial api design