Change to abstract and added variation