Check out and make use of ApiCaller: CoroutineCaller implementation which handles all network errors with grace
Check out and make use of UiCaller implementation - it manages kotlin coroutine api requests automatically via makeRequest() function. Fragments just have to observe statusLiveData for SHOW_LOADING and HIDE_LOADING events
Check out and make use of DisplayAdapter - it can manage complex lists by handing control to items