provide better key handling api