refactor into some classes, add stop/song functionality