This can't be coalesced into one implementation that's either templated or takes a parameter indicating call site?