make implementation switchable at the command line