added abstract collection and persist playlist state