redesigning Surprise API to support BoomSurprise