better mutation algorithm