Barto, L., Krokhin, A., Willard, R., "Polymorphisms, and how to use them", , 2017