Basic functions for supporting an implementation of choice