pushed api design principles text