adding coordinate descent algorithm