Add interface and abstract layer, allow to include repository inside repository to reuse logic