## `ListBaseViewController` replacement
### Overview
In order to achieve [new][feed-design] [UIs][profile-design] for various parts of the app a/some new composable component/s should be implemented, replacing those that inherit from `ListBaseViewController`.
As every one of these screens features multiple lists, both horizontal and vertical, each one fetching data from different sources, the idea is to have a clean and empty "wrapper" for each screen that holds more modularized components.
In the spirit of keeping things simple and nice, these smaller components (controllers) should manage only one type of data.
For example, for the Feed screen, a couple of easy identifiable components are:
:::info
An horizontal list for suggested accounts, that can be generalized as an horizontal list of profiles to be used everywhere.

:::
:::info
A vertical list of the social songs/albums/playlists, which can be generalized to be a vertical list of music.

:::
### Implementation
To avoid strange scrolling behaviours and bugs when dealing with multiple and differently scrollable lists inside the same scene, the easier implementation seems to be to have a general `UICollectionView` for each scene (or maybe only a configurable one) in which cells contain music items (songs, albums, playlists) and custom headers hold the various views for children view controllers.
:::info
In the following image the header displays the view of an external view controller, with its logic and datasource.
The second header is a simple header that could contain a switch to filter cells or something (refer to design).

Arbitrary positions of multiple headers/footers can be obtained by having multiple sections and setting their number of cells accordingly.
:::
[feed-design]: https://projects.invisionapp.com/share/GPY7630RYAQ#/screens/426429226_AM-Feed
[profile-design]: https://projects.invisionapp.com/share/87YTGX0JH2X#/screens/432138795_AM-Artist-NoBannerALT