algo. modified