- refactored the interfaces and implementations to depend only on ids
instead of passing whole objects as parameters