refactoring view/model separation for playlist