optimizing API design