Add playlist improvements, code refactoring, closes #174