added Algorithm + interface