can choose which algorithm