Went with a less DRY approach