Further partial update.
Implemented simple approach to getting the data in cratesData. It always retrieves the whole lot instead of checking at each level if it already has the data.
Simplified the model so that one can only select a row rather than an element on a row
Still a bit to implement to finish this section off:
   - clever data retrieval
   - getModelByIndex should return a promise