try to make abstract functions to choose a precure

but currently can't compile due to ambigious type