algo abstract