factored relationships into separate model
refactored relationship to not use lambdas

Not sure this is any better. But I think it's more clear and consistant
trying out some caching and testing it in a view spec