Hierarchical Merging

# Examples

#### `thresh=40`
![40](https://cloud.githubusercontent.com/assets/3823490/3928338/85888a96-2408-11e4-8c5b-e2b3d05bf693.png)

#### `thresh=40`
![40_2](https://cloud.githubusercontent.com/assets/3823490/3928340/8c746aaa-2408-11e4-823c-943fa45b167f.png)

#### `thresh=40`
![ball_40](https://cloud.githubusercontent.com/assets/3823490/3928345/9ac0be24-2408-11e4-8f1a-3fe758ed3023.png)

#### `thresh=60`
![60](https://cloud.githubusercontent.com/assets/3823490/3928354/aafcdbc4-2408-11e4-9701-c2471166a1f5.png)

#### `thresh=60`
![car_60](https://cloud.githubusercontent.com/assets/3823490/3928363/c02292b4-2408-11e4-8a0d-e4983adc51b1.png)






@vighneshbirodkar but the merge is not an atomic operation. Indeed, `new` *must* be created before calling weight_func, no? The question is, do you just *make* a `new` node, or do you *copy* `dst` to `new` before doing further processing?

The key is that weight_func will use *either* dst *or* new, but never both, which suggests that the argument is redundant...?