major refactoring of recombine and chunk_mutate