algorithm updates