Algortihm typeclass defined