Add algorithm for generating variations