refactor domain model for Stream objects to compose everything around ActivityStreamItem