add robust callback implementation