Currently, the two functions have more or less completely separated code. Which means when updating how stuff is loaded from the backend (e.g. #434), we need to change code at two different locations.
This is not a nice design, and we should let the two function share more code.