extract data preparation into base class
Refactoring: rename track -> item
             add unified interface for top-k recommendations