add mutation algorithm