robust API design