Mmmm...MVC, DRY as a bone.