new factory: song_verions; test refactor and bug fix