only allow one callback and provide explicit method for setting callback