Replace internals with named fns
Optimize relation logic for readability
Add $fetch method to collection
Delegate Model.$where to collection.$fetch and remove redundant tests