add Abstract class base Algorithm