algorithm descriptions