Refactor, and support arbitrary verse patterns