Added marker type for relationships. Using interfaces instead of annotation because along with serving as a marker type, the interface also provides the 3 essential methods.
Renamed Factory to Repository or Repo to make the name less confusing with other OO concepts.