Song breakup

It's not finished yet (still tracking down a bug), but I changed a lot of code and wanted to get some eyes on it.