Refactor and support arbitrary verse structure