added a variation generator