Not DRY, but functional.