Dividing `repository->find` method in smaller pieces

This way, concrete implementations can reimplement its parts to get more
control over the data that is used to build the resource.