an initial api design