Immutability:
- edge map is now created
- now needs to be ordered
- new objects need to be created for edges (old ones need to be garbage collected)
- yada yada

Speed up:
- evilly using mutability internally for speedups
- other simple stuff

Bug fixes here and there