#6 setting the algorithm type correctly, based on the implemented interfaces
using sets for algorithm interfaces