Added link class and thought more about using hashcode for key objects.
Merge branch 'develop'