Please don't add an abstraction without a second implementation. Once we have the implementation we can consider the tradeoffs. E.g. if expensive indirect function calls are really needed vs simple branches.