Interesting approach here with creating different callbacks for the different scenarios... I feel like there's a more idiomatic way, but I don't necessarily dislike it.  Hmm.  Will think on it.