What is the difference between an Algorithm and a Protocol